SDK监听节点链码事件
SDK部分代码(通道实例化之前):
Map<Long, BlockEvent> blockEvents = Collections.synchronizedMap(new HashMap<>(100));
String blockListenerHandle = channel.registerBlockListener(blockEvent -> { // register a block listener
try {
//获得区块的区块号
final long blockNumber = blockEvent.getBlockNumber();
//在事件结果中添加区块号对应的事件
blockEvents.put(blockNumber, blockEvent);
Iterable<BlockEvent.TransactionEvent> transactionEvents = blockEvent.getTransactionEvents();
for (BlockEvent.TransactionEvent event : transactionEvents) {
for (BlockInfo.TransactionEnvelopeInfo.TransactionActionInfo info : event.getTransactionActionInfos()) {
System.out.println(info.getEvent().getEventName());
System.out.println(new String(info.getEvent().getPayload()));
}
}
} catch (AssertionError | Exception e) {
e.printStackTrace();
}
});
链码使用代码:
stub.SetEvent("result", value)