use of io.nuls.protocol.model.CompleteParam in project nuls by nuls-io.
the class CompleteHandler method onMessage.
@Override
public void onMessage(CompleteMessage message, Node fromNode) {
if (message == null || message.getMsgBody() == null || fromNode == null) {
return;
}
CompleteParam param = message.getMsgBody();
ProtocolCacheHandler.taskComplete(param);
}
use of io.nuls.protocol.model.CompleteParam in project nuls by nuls-io.
the class GetBlocksByHashHandler method onMessage.
@Override
public void onMessage(GetBlocksByHashMessage message, Node fromNode) {
if (message == null || message.getMsgBody() == null || fromNode == null) {
return;
}
GetBlocksByHashParam param = message.getMsgBody();
if (param.getStartHash() == null || param.getEndHash() == null) {
return;
}
NulsDigestData requestHash = null;
try {
requestHash = NulsDigestData.calcDigestData(param.serialize());
} catch (IOException e) {
e.printStackTrace();
}
// react request
messageBusService.sendToNode(new ReactMessage(requestHash), fromNode, true);
BlockHeader startBlockHeader = blockService.getBlockHeader(param.getStartHash()).getData();
if (startBlockHeader == null) {
sendNotFound(requestHash, fromNode);
return;
}
Block endBlock = blockService.getBlock(param.getEndHash()).getData();
if (endBlock == null) {
sendNotFound(requestHash, fromNode);
return;
}
if (endBlock.getHeader().getHeight() - startBlockHeader.getHeight() >= MAX_SIZE) {
return;
}
Block block = endBlock;
while (true) {
sendBlock(block, fromNode);
if (block.getHeader().getHash().equals(startBlockHeader.getHash())) {
break;
}
Result<Block> result = blockService.getBlock(block.getHeader().getPreHash());
if (result.isFailed() || (block = result.getData()) == null) {
sendNotFound(requestHash, fromNode);
return;
}
}
CompleteMessage completeMessage = new CompleteMessage();
completeMessage.setMsgBody(new CompleteParam(requestHash, true));
messageBusService.sendToNode(completeMessage, fromNode, true);
}
use of io.nuls.protocol.model.CompleteParam in project nuls by nuls-io.
the class GetBlocksByHeightHandler method onMessage.
@Override
public void onMessage(GetBlocksByHeightMessage message, Node fromNode) {
if (message == null || message.getMsgBody() == null || fromNode == null) {
return;
}
GetBlocksByHeightParam param = message.getMsgBody();
if (param.getStartHeight() < 0L || param.getStartHeight() > param.getEndHeight()) {
return;
}
if (param.getEndHeight() - param.getStartHeight() >= MAX_SIZE) {
return;
}
NulsDigestData requestHash = null;
try {
requestHash = NulsDigestData.calcDigestData(param.serialize());
} catch (IOException e) {
e.printStackTrace();
}
// react request
messageBusService.sendToNode(new ReactMessage(requestHash), fromNode, true);
Block startBlock = blockService.getBlock(param.getStartHeight()).getData();
if (startBlock == null) {
sendNotFound(requestHash, fromNode);
return;
}
// Block endBlock = blockService.getBlock(param.getEndHeight()).getData();
// if(endBlock == null) {
// sendNotFound(requestHash, fromNode);
// return;
// }
//
// Block block = endBlock;
// while(true) {
// sendBlock(block, fromNode);
// if(block.getHeader().getHash().equals(startBlockHeader.getHash())) {
// break;
// }
// Result<Block> result = blockService.getBlock(block.getHeader().getPreHash());
// if (result.isFailed() || (block = result.getData()) == null) {
// sendNotFound(requestHash, fromNode);
// return;
// }
// }
Block block = startBlock;
sendBlock(block, fromNode);
for (long i = param.getStartHeight() + 1; i <= param.getEndHeight(); i++) {
block = blockService.getBlock(i).getData();
sendBlock(block, fromNode);
}
CompleteMessage completeMessage = new CompleteMessage();
completeMessage.setMsgBody(new CompleteParam(requestHash, true));
messageBusService.sendToNode(completeMessage, fromNode, true);
}
Aggregations