use of io.nuls.protocol.model.SmallBlock in project nuls by nuls-io.
the class BlockProcess method forwardingBlock.
/**
* forwarding block
* <p>
* 转发区块
*/
private void forwardingBlock(BlockContainer blockContainer) {
if (blockContainer.getStatus() == BlockContainerStatus.DOWNLOADING) {
return;
}
if (blockContainer.getNode() == null) {
return;
}
SmallBlock smallBlock = ConsensusTool.getSmallBlock(blockContainer.getBlock());
cacheManager.cacheSmallBlock(smallBlock);
Result result = blockService.forwardBlock(blockContainer.getBlock().getHeader().getHash(), blockContainer.getNode());
if (!result.isSuccess()) {
Log.warn("forward the block failed, block height: " + blockContainer.getBlock().getHeader().getHeight() + " , hash : " + blockContainer.getBlock().getHeader().getHash());
}
}
use of io.nuls.protocol.model.SmallBlock in project nuls by nuls-io.
the class TxGroupHandler method onMessage.
@Override
public void onMessage(TxGroupMessage message, Node fromNode) throws NulsException {
TxGroup txGroup = message.getMsgBody();
if (null == txGroup) {
Log.warn("recieved a null txGroup form " + fromNode.getId());
return;
}
SmallBlock smallBlock = temporaryCacheManager.getSmallBlockByRequest(txGroup.getRequestHash());
if (null == smallBlock) {
return;
}
BlockHeader header = smallBlock.getHeader();
Map<NulsDigestData, Transaction> txMap = new HashMap<>();
for (Transaction tx : smallBlock.getSubTxList()) {
txMap.put(tx.getHash(), tx);
}
for (Transaction tx : txGroup.getTxList()) {
txMap.put(tx.getHash(), tx);
}
for (NulsDigestData hash : smallBlock.getTxHashList()) {
Transaction tx = txMap.get(hash);
if (null == tx) {
tx = temporaryCacheManager.getTx(hash);
}
if (tx != null) {
smallBlock.getSubTxList().add(tx);
txMap.put(hash, tx);
}
}
Block block = AssemblyBlockUtil.assemblyBlock(header, txMap, smallBlock.getTxHashList());
consensusService.newBlock(block, fromNode);
}
Aggregations