2
我正在修补web3j,并且我想要做的大部分事情都能成功,但是我似乎无法听到事件。在Web3j中倾听事件
我已经通过添加一个事件VoteEnded来扩展您通过混音获得的ballot.sol合同,该事件在对callsProposal进行调用并且在Remix JavaScript VM中可用时触发。
...
event VoteEnded();
...
function winningProposal() constant returns (uint8 winningProposal) {
uint256 winningVoteCount = 0;
for (uint8 proposal = 0; proposal < proposals.length; proposal++)
if (proposals[proposal].voteCount > winningVoteCount) {
winningVoteCount = proposals[proposal].voteCount;
winningProposal = proposal;
}
VoteEnded();
}
...
我能够在Web3j中部署此合同和投票等。然后我添加了一个过滤器来收听VoteEnded。我这样做:
EthFilter filter = new EthFilter(DefaultBlockParameterName.EARLIEST, DefaultBlockParameterName.LATEST, contract.getContractAddress());
web3.ethLogObservable(filter).subscribe(new Action1<Log>() {
@Override
public void call(Log log) {
System.out.println("log.toString(): " + log.toString());
}
});
但是,这并不打印任何东西。
我在做什么错?