use of io.nuls.consensus.entity.TxGroup in project nuls by nuls-io.
the class TxGroupHandler method onEvent.
@Override
public void onEvent(TxGroupEvent event, String fromId) {
TxGroup txGroup = event.getEventBody();
BlockHeader header = temporaryCacheManager.getBlockHeader(event.getEventBody().getBlockHash().getDigestHex());
if (header == null) {
return;
}
SmallBlock smallBlock = temporaryCacheManager.getSmallBlock(header.getHash().getDigestHex());
if (null == smallBlock) {
return;
}
Block block = new Block();
block.setHeader(header);
List<Transaction> txs = new ArrayList<>();
for (NulsDigestData txHash : smallBlock.getTxHashList()) {
Transaction tx = txCacheManager.getTx(txHash);
if (null == tx) {
tx = txGroup.getTx(txHash.getDigestHex());
}
if (null == tx) {
throw new NulsRuntimeException(ErrorCode.DATA_ERROR);
}
txs.add(tx);
}
block.setTxs(txs);
ValidateResult<RedPunishData> vResult = block.verify();
if (null == vResult || (vResult.isFailed() && vResult.getErrorCode() != ErrorCode.ORPHAN_TX)) {
if (vResult.getLevel() == SeverityLevelEnum.FLAGRANT_FOUL) {
RedPunishData data = vResult.getObject();
ConsensusMeetingRunner.putPunishData(data);
networkService.blackNode(fromId, NodePo.BLACK);
} else {
networkService.removeNode(fromId, NodePo.YELLOW);
}
return;
}
blockManager.addBlock(block, false, fromId);
downloadDataUtils.removeTxGroup(block.getHeader().getHash().getDigestHex());
AssembledBlockNotice notice = new AssembledBlockNotice();
notice.setEventBody(header);
eventBroadcaster.publishToLocal(notice);
}
use of io.nuls.consensus.entity.TxGroup in project nuls by nuls-io.
the class GetTxGroupHandler method onEvent.
@Override
public void onEvent(GetTxGroupRequest event, String fromId) {
GetTxGroupParam eventBody = event.getEventBody();
Block block = blockService.getBlock(eventBody.getBlockHash().getDigestHex());
if (null == block) {
return;
}
TxGroupEvent txGroupEvent = new TxGroupEvent();
TxGroup txGroup = new TxGroup();
txGroup.setBlockHash(block.getHeader().getHash());
List<Transaction> txList = getTxList(block, eventBody.getTxHashList());
txGroup.setTxList(txList);
txGroupEvent.setEventBody(txGroup);
eventBroadcaster.sendToNode(txGroupEvent, fromId);
}
Aggregations