use of io.nuls.network.netty.container.NodesContainer in project nuls by nuls-io.
the class NodeManager method loadDatas.
public void loadDatas() {
// 本地已经存储的节点信息
NodeContainerPo containerPo = getNetworkStorageService().loadNodeContainer();
if (containerPo != null) {
NodesContainer container = new NodesContainer(containerPo);
this.nodesContainer = container;
}
// 获取种子节点
List<Node> seedList = getSeedNodes();
for (Node node : seedList) {
node.setConnectStatus(NodeConnectStatusEnum.UNCONNECT);
nodesContainer.getCanConnectNodes().put(node.getId(), node);
nodesContainer.getUncheckNodes().remove(node.getId());
nodesContainer.getDisconnectNodes().remove(node.getId());
nodesContainer.getFailNodes().remove(node.getId());
}
}
use of io.nuls.network.netty.container.NodesContainer in project nuls by nuls-io.
the class GetNodesMessageHandler method getAvailableNodes.
private List<Node> getAvailableNodes() {
NodesContainer nodesContainer = nodeManager.getNodesContainer();
Map<String, Node> canConnectNodes = nodesContainer.getCanConnectNodes();
Map<String, Node> connectedNodes = nodesContainer.getConnectedNodes();
List<Node> nodeList = new ArrayList<>();
for (Node node : canConnectNodes.values()) {
Node newNode = new Node();
newNode.setIp(node.getIp());
newNode.setPort(node.getPort());
nodeList.add(newNode);
}
for (Node node : connectedNodes.values()) {
if (node.getType() == Node.IN) {
continue;
}
Node newNode = new Node();
newNode.setIp(node.getIp());
newNode.setPort(node.getPort());
nodeList.add(newNode);
}
Collections.shuffle(nodeList);
return nodeList;
}
use of io.nuls.network.netty.container.NodesContainer in project nuls by nuls-io.
the class NodeDiscoverTask method processFailNodes.
private void processFailNodes() {
try {
NodesContainer nodesContainer = nodeManager.getNodesContainer();
Map<String, Node> canConnectNodes = nodesContainer.getCanConnectNodes();
while (true) {
Map<String, Node> failNodes = nodesContainer.getFailNodes();
if (failNodes.size() > 0) {
probeNodes(failNodes, canConnectNodes);
}
Thread.sleep(3000L);
}
} catch (Exception e) {
Log.error(e);
try {
Thread.sleep(3000L);
} catch (InterruptedException e1) {
Log.error(e1);
}
}
}
use of io.nuls.network.netty.container.NodesContainer in project nuls by nuls-io.
the class NodeDiscoverTask method processNodes.
private void processNodes() {
NodesContainer nodesContainer = nodeManager.getNodesContainer();
Map<String, Node> canConnectNodes = nodesContainer.getCanConnectNodes();
Map<String, Node> uncheckNodes = nodesContainer.getUncheckNodes();
Map<String, Node> disconnectNodes = nodesContainer.getDisconnectNodes();
if (uncheckNodes.size() > 0) {
probeNodes(uncheckNodes, canConnectNodes);
}
if (disconnectNodes.size() > 0) {
probeNodes(disconnectNodes, canConnectNodes);
}
}
Aggregations