use of io.nuls.client.rpc.resources.thread.ShutdownHook in project nuls by nuls-io.
the class Bootstrap method sysStart.
private static void sysStart() throws Exception {
do {
MicroKernelBootstrap mk = MicroKernelBootstrap.getInstance();
mk.init();
mk.start();
WalletVersionManager.start();
initModules();
String ip = NulsConfig.MODULES_CONFIG.getCfgValue(RpcConstant.CFG_RPC_SECTION, RpcConstant.CFG_RPC_SERVER_IP, RpcConstant.DEFAULT_IP);
int port = NulsConfig.MODULES_CONFIG.getCfgValue(RpcConstant.CFG_RPC_SECTION, RpcConstant.CFG_RPC_SERVER_PORT, RpcConstant.DEFAULT_PORT);
copyWebFiles();
if (NULSParams.BOOTSTRAP.getRpcIp() != null) {
ip = NULSParams.BOOTSTRAP.getRpcIp();
}
if (NULSParams.BOOTSTRAP.getRpcPort() != null) {
port = NULSParams.BOOTSTRAP.getRpcPort();
}
RpcServerManager.getInstance().startServer(ip, port);
LanguageService languageService = NulsContext.getServiceBean(LanguageService.class);
String languageDB = (String) languageService.getLanguage().getData();
String language = null == languageDB ? I18nUtils.getLanguage() : languageDB;
I18nUtils.setLanguage(language);
if (null == languageDB) {
languageService.saveLanguage(language);
}
} while (false);
// if isDaemon flag is true, don't launch the WebView
boolean isDaemon = NulsConfig.MODULES_CONFIG.getCfgValue(RpcConstant.CFG_RPC_SECTION, RpcConstant.CFG_RPC_DAEMON, false);
if (!isDaemon) {
TaskManager.asynExecuteRunnable(new WebViewBootstrap());
}
int i = 0;
Map<NulsDigestData, List<Node>> map = new HashMap<>();
NulsContext context = NulsContext.getInstance();
DownloadService downloadService = NulsContext.getServiceBean(DownloadService.class);
while (true) {
if (context.getStop() > 0) {
if (context.getStop() == 2) {
Runtime.getRuntime().addShutdownHook(new ShutdownHook());
}
System.exit(0);
}
if (NulsContext.mastUpGrade) {
// 如果强制升级标志开启,停止网络连接
ModuleManager.getInstance().stopModule(NetworkConstant.NETWORK_MODULE_ID);
Log.error(">>>>>> The new protocol version has taken effect, the network connection has been disconnected,please upgrade immediately **********");
}
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
Log.error(e);
}
if (i > 10) {
i = 0;
if (!downloadService.isDownloadSuccess().isSuccess() && CollectThread.getInstance().getStartHeight() > 0) {
Log.info("collect-start:{},request-start:{},BlockQueueSize:{}", CollectThread.getInstance().getStartHeight(), CollectThread.getInstance().getRequestStartHeight(), BlockQueueProvider.getInstance().size());
}
Block bestBlock = NulsContext.getInstance().getBestBlock();
Collection<Node> nodes = NulsContext.getServiceBean(NetworkService.class).getAvailableNodes();
Log.info("bestHeight:" + bestBlock.getHeader().getHeight() + " , txCount : " + bestBlock.getHeader().getTxCount() + " , tx memory pool count : " + TxMemoryPool.getInstance().size() + " - " + TxMemoryPool.getInstance().getOrphanPoolSize() + " , hash : " + bestBlock.getHeader().getHash() + ",nodeCount:" + nodes.size());
map.clear();
for (Node node : nodes) {
List<Node> ips = map.get(node.getBestBlockHash());
if (null == ips) {
ips = new ArrayList<>();
map.put(node.getBestBlockHash(), ips);
}
ips.add(node);
}
for (NulsDigestData key : map.keySet()) {
if (key == null)
continue;
List<Node> nodeList = map.get(key);
long height = nodeList.get(0).getBestBlockHeight();
StringBuilder ids = new StringBuilder();
for (Node node : nodeList) {
ids.append("," + node.getId());
}
Log.info("height:" + height + ",count:" + nodeList.size() + ", hash:" + key.getDigestHex() + ids);
}
} else {
i++;
}
}
}
Aggregations