Search in sources :

Example 1 with CompleteParam

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);
}
Also used : CompleteParam(io.nuls.protocol.model.CompleteParam)

Example 2 with CompleteParam

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);
}
Also used : GetBlocksByHashParam(io.nuls.protocol.model.GetBlocksByHashParam) NulsDigestData(io.nuls.kernel.model.NulsDigestData) Block(io.nuls.kernel.model.Block) IOException(java.io.IOException) BlockHeader(io.nuls.kernel.model.BlockHeader) CompleteParam(io.nuls.protocol.model.CompleteParam)

Example 3 with CompleteParam

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);
}
Also used : NulsDigestData(io.nuls.kernel.model.NulsDigestData) Block(io.nuls.kernel.model.Block) GetBlocksByHeightParam(io.nuls.protocol.model.GetBlocksByHeightParam) IOException(java.io.IOException) CompleteParam(io.nuls.protocol.model.CompleteParam)

Aggregations

CompleteParam (io.nuls.protocol.model.CompleteParam)3 Block (io.nuls.kernel.model.Block)2 NulsDigestData (io.nuls.kernel.model.NulsDigestData)2 IOException (java.io.IOException)2 BlockHeader (io.nuls.kernel.model.BlockHeader)1 GetBlocksByHashParam (io.nuls.protocol.model.GetBlocksByHashParam)1 GetBlocksByHeightParam (io.nuls.protocol.model.GetBlocksByHeightParam)1