use of io.nuls.network.protocol.message.GetVersionMessage in project nuls by nuls-io.
the class GetVersionMessageHandler method process.
@Override
public NetworkEventResult process(BaseMessage message, Node node) {
GetVersionMessage getVersionMessage = (GetVersionMessage) message;
NetworkMessageBody body = getVersionMessage.getMsgBody();
if (body.getBestBlockHeight() < 0) {
// node.setStatus(Node.BAD);
nodeManager.removeNode(node.getId());
return null;
}
node.setBestBlockHeight(body.getBestBlockHeight());
node.setBestBlockHash(body.getBestBlockHash());
NetworkMessageBody myVersionBody = new NetworkMessageBody(NetworkConstant.HANDSHAKE_CLIENT_TYPE, networkParam.getPort(), NulsContext.getInstance().getBestHeight(), NulsContext.getInstance().getBestBlock().getHeader().getHash());
return new NetworkEventResult(true, new VersionMessage(myVersionBody));
}
use of io.nuls.network.protocol.message.GetVersionMessage in project nuls by nuls-io.
the class GetNodeVersionTask method process.
private void process() {
Collection<Node> connectedNodes = nodeManager.getAvailableNodes();
if (connectedNodes == null) {
return;
}
NetworkMessageBody body = new NetworkMessageBody(NetworkConstant.HANDSHAKE_CLIENT_TYPE, networkParam.getPort(), NulsContext.getInstance().getBestHeight(), NulsContext.getInstance().getBestBlock().getHeader().getHash());
GetVersionMessage getVersionMessage = new GetVersionMessage(body);
Iterator<Node> it = connectedNodes.iterator();
while (it.hasNext()) {
Node node = it.next();
if (node.getType() == Node.OUT) {
if (!checkIsSurvive(node)) {
it.remove();
continue;
}
node.setLastTime(TimeService.currentTimeMillis());
broadcastHandler.broadcastToNode(getVersionMessage, node, true);
}
}
}
Aggregations