Listen to tx pre event and trigger 'pending'
This commit is contained in:
27
rpc/api.go
27
rpc/api.go
@ -180,21 +180,24 @@ func (self *EthereumApi) NewFilterString(args *FilterStringArgs, reply *interfac
|
||||
var id int
|
||||
filter := core.NewFilter(self.xeth().Backend())
|
||||
|
||||
callback := func(block *types.Block, logs state.Logs) {
|
||||
self.logMut.Lock()
|
||||
defer self.logMut.Unlock()
|
||||
|
||||
for _, log := range logs {
|
||||
self.logs[id].add(log)
|
||||
}
|
||||
self.logs[id].add(&state.StateLog{})
|
||||
}
|
||||
|
||||
switch args.Word {
|
||||
case "pending":
|
||||
filter.PendingCallback = callback
|
||||
filter.PendingCallback = func(tx *types.Transaction) {
|
||||
self.logMut.Lock()
|
||||
defer self.logMut.Unlock()
|
||||
|
||||
self.logs[id].add(&state.StateLog{})
|
||||
}
|
||||
case "latest":
|
||||
filter.BlockCallback = callback
|
||||
filter.BlockCallback = func(block *types.Block, logs state.Logs) {
|
||||
self.logMut.Lock()
|
||||
defer self.logMut.Unlock()
|
||||
|
||||
for _, log := range logs {
|
||||
self.logs[id].add(log)
|
||||
}
|
||||
self.logs[id].add(&state.StateLog{})
|
||||
}
|
||||
default:
|
||||
return NewValidationError("Word", "Must be `latest` or `pending`")
|
||||
}
|
||||
|
Reference in New Issue
Block a user