Search in sources :

Example 6 with NulsDigestData

use of io.nuls.kernel.model.NulsDigestData in project nuls by nuls-io.

the class GetTxGroupHandler method onMessage.

@Override
public void onMessage(GetTxGroupRequest message, Node fromNode) {
    if (message == null || fromNode == null) {
        return;
    }
    GetTxGroupParam getTxGroupParam = message.getMsgBody();
    if (getTxGroupParam == null || getTxGroupParam.getTxHashList() == null || getTxGroupParam.getTxHashList().size() > 10000) {
        return;
    }
    NulsDigestData requestHash = null;
    try {
        requestHash = NulsDigestData.calcDigestData(getTxGroupParam.serialize());
    } catch (IOException e) {
        Log.error(e);
        return;
    }
    TxGroupMessage txGroupMessage = new TxGroupMessage();
    TxGroup txGroup = new TxGroup();
    List<Transaction> txList = new ArrayList<>();
    for (NulsDigestData hash : getTxGroupParam.getTxHashList()) {
        Transaction tx = transactionService.getTx(hash);
        if (tx != null) {
            txList.add(tx);
        } else {
            Log.error("GetTxGroupHandler NULL TX=========================================hash: " + hash.getDigestHex());
            return;
        }
    }
    if (txList.isEmpty()) {
        Log.error("ASK:{}, {}", fromNode, getTxGroupParam.getTxHashList().get(0));
        return;
    }
    txGroup.setTxList(txList);
    txGroup.setRequestHash(requestHash);
    txGroupMessage.setMsgBody(txGroup);
    messageBusService.sendToNode(txGroupMessage, fromNode, true);
}
Also used : TxGroup(io.nuls.protocol.model.TxGroup) Transaction(io.nuls.kernel.model.Transaction) GetTxGroupParam(io.nuls.protocol.model.GetTxGroupParam) ArrayList(java.util.ArrayList) NulsDigestData(io.nuls.kernel.model.NulsDigestData) IOException(java.io.IOException) TxGroupMessage(io.nuls.protocol.message.TxGroupMessage)

Example 7 with NulsDigestData

use of io.nuls.kernel.model.NulsDigestData in project nuls by nuls-io.

the class TransactionMessageHandler method onMessage.

@Override
public void onMessage(TransactionMessage message, Node fromNode) {
    Transaction tx = message.getMsgBody();
    if (null == tx) {
        return;
    }
    if (tx.isSystemTx()) {
        return;
    }
    NulsDigestData hash = tx.getHash();
    TransactionDuplicateRemoval.insert(hash);
    transactionService.newTx(tx);
}
Also used : Transaction(io.nuls.kernel.model.Transaction) NulsDigestData(io.nuls.kernel.model.NulsDigestData)

Example 8 with NulsDigestData

use of io.nuls.kernel.model.NulsDigestData in project nuls by nuls-io.

the class ForwardSmallBlockHandler method onMessage.

@Override
public void onMessage(ForwardSmallBlockMessage message, Node fromNode) {
    if (message == null || fromNode == null || !fromNode.isHandShake() || null == message.getMsgBody()) {
        return;
    }
    NulsDigestData hash = message.getMsgBody();
    if (!SmallBlockDuplicateRemoval.needDownloadSmallBlock(hash)) {
        return;
    }
    GetSmallBlockMessage getSmallBlockMessage = new GetSmallBlockMessage();
    getSmallBlockMessage.setMsgBody(hash);
    Result result = messageBusService.sendToNode(getSmallBlockMessage, fromNode, true);
// if (result.isFailed()) {
// SmallBlockDuplicateRemoval.removeForward(hash);
// return;
// }
}
Also used : NulsDigestData(io.nuls.kernel.model.NulsDigestData) GetSmallBlockMessage(io.nuls.protocol.message.GetSmallBlockMessage) Result(io.nuls.kernel.model.Result)

Example 9 with NulsDigestData

use of io.nuls.kernel.model.NulsDigestData in project nuls by nuls-io.

the class GetBlockHandler method onMessage.

@Override
public void onMessage(GetBlockMessage message, Node fromNode) {
    if (message == null || message.getMsgBody() == null || fromNode == null) {
        return;
    }
    NulsDigestData blockHash = message.getBlockHash();
    // react request
    messageBusService.sendToNode(new ReactMessage(blockHash), fromNode, true);
    Block block = null;
    Result<Block> result = blockService.getBlock(blockHash);
    if (result.isFailed() || (block = result.getData()) == null) {
        sendNotFound(blockHash, fromNode);
        return;
    }
    sendBlock(block, fromNode);
}
Also used : ReactMessage(io.nuls.protocol.message.ReactMessage) NulsDigestData(io.nuls.kernel.model.NulsDigestData) Block(io.nuls.kernel.model.Block)

Example 10 with NulsDigestData

use of io.nuls.kernel.model.NulsDigestData 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

NulsDigestData (io.nuls.kernel.model.NulsDigestData)54 ArrayList (java.util.ArrayList)16 Transaction (io.nuls.kernel.model.Transaction)12 Test (org.junit.Test)12 Block (io.nuls.kernel.model.Block)9 AgentPo (io.nuls.consensus.poc.storage.po.AgentPo)8 NulsException (io.nuls.kernel.exception.NulsException)8 BlockHeader (io.nuls.kernel.model.BlockHeader)7 IOException (java.io.IOException)7 NulsRuntimeException (io.nuls.kernel.exception.NulsRuntimeException)5 Result (io.nuls.kernel.model.Result)5 BaseTest (io.nuls.consensus.poc.storage.BaseTest)4 HashSet (java.util.HashSet)4 DepositPo (io.nuls.consensus.poc.storage.po.DepositPo)3 MicroKernelBootstrap (io.nuls.kernel.MicroKernelBootstrap)3 BlockSignature (io.nuls.kernel.script.BlockSignature)3 ValidateResult (io.nuls.kernel.validate.ValidateResult)3 Node (io.nuls.network.model.Node)3 TransferTransaction (io.nuls.protocol.model.tx.TransferTransaction)3 Deposit (io.nuls.consensus.poc.protocol.entity.Deposit)2