use of io.nuls.network.model.Node 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.model.Node in project nuls by nuls-io.
the class NetworkTransferTool method toNode.
public static Node toNode(NodePo po) {
Node node = new Node();
node.setId(po.getId());
node.setIp(po.getIp());
node.setPort(po.getPort());
node.setFailCount(po.getFailCount());
node.setLastTime(po.getLastTime());
node.setLastFailTime(po.getLastFailTime());
node.setStatus(po.getStatus());
node.setConnectStatus(po.getConnectStatus());
return node;
}
use of io.nuls.network.model.Node in project nuls by nuls-io.
the class NetworkStorageServiceImpl method getAllNodes.
@Override
public List<Node> getAllNodes() {
List<NodePo> poList = getDbService().values(NetworkStorageConstant.DB_NAME_NETWORK_NODE, NodePo.class);
if (poList == null) {
return new ArrayList<>();
}
List<Node> nodeList = new ArrayList<>();
for (NodePo po : poList) {
nodeList.add(NetworkTransferTool.toNode(po));
}
return nodeList;
}
use of io.nuls.network.model.Node in project nuls by nuls-io.
the class MessageBusServiceImpl method getNodeIdListResult.
private Result<List<String>> getNodeIdListResult(BroadcastResult result) {
List<String> list = new ArrayList<>();
if (!result.isSuccess() || result.getBroadcastNodes() == null || result.getBroadcastNodes().isEmpty()) {
return Result.getFailed(result.getErrorCode()).setData(list);
}
for (Node node : result.getBroadcastNodes()) {
list.add(node.getId());
}
Result rs = new Result();
rs.setSuccess(true);
rs.setData(list);
return rs;
}
use of io.nuls.network.model.Node in project nuls by nuls-io.
the class NodeDiscoverTask method probeNodes.
private void probeNodes(Map<String, Node> verifyNodes, Map<String, Node> canConnectNodes) {
for (Map.Entry<String, Node> nodeEntry : verifyNodes.entrySet()) {
Node node = nodeEntry.getValue();
boolean needProbeNow = checkNeedProbeNow(node, verifyNodes);
if (!needProbeNow) {
continue;
}
int status = doProbe(node);
if (status == PROBE_STATUS_IGNORE) /* && !node.isSeedNode()*/
{
continue;
}
verifyNodes.remove(node.getId());
if (status == PROBE_STATUS_SUCCESS) {
node.setConnectStatus(NodeConnectStatusEnum.UNCONNECT);
node.setStatus(NodeStatusEnum.CONNECTABLE);
node.setFailCount(0);
canConnectNodes.put(node.getId(), node);
if (node.getLastProbeTime() == 0L) {
// 当lastProbeTime为0时,代表第一次探测且成功,只有在第一次探测成功时情况,才转发节点信息
doShare(node);
}
} else if (status == PROBE_STATUS_FAIL) {
nodeManager.nodeConnectFail(node);
nodeManager.getNodesContainer().getFailNodes().put(node.getId(), node);
}
node.setLastProbeTime(TimeService.currentTimeMillis());
}
}
Aggregations