diff options
author | obscuren <geffobscura@gmail.com> | 2015-02-14 00:23:48 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-02-14 00:23:48 +0800 |
commit | 7336dfad02833989037440fb22e01566444d0100 (patch) | |
tree | 8f7dc62676e519236b69a977c7af00d81b1e0406 /event | |
parent | c9985bf563888d5f346408d2ff174167e8b65880 (diff) | |
parent | 00fca409398172811e71158e0ca9f6229e0f815b (diff) | |
download | dexon-7336dfad02833989037440fb22e01566444d0100.tar dexon-7336dfad02833989037440fb22e01566444d0100.tar.gz dexon-7336dfad02833989037440fb22e01566444d0100.tar.bz2 dexon-7336dfad02833989037440fb22e01566444d0100.tar.lz dexon-7336dfad02833989037440fb22e01566444d0100.tar.xz dexon-7336dfad02833989037440fb22e01566444d0100.tar.zst dexon-7336dfad02833989037440fb22e01566444d0100.zip |
Merge branch 'develop' into poc8
Diffstat (limited to 'event')
-rw-r--r-- | event/filter/eth_filter.go (renamed from event/filter/old_filter.go) | 22 | ||||
-rw-r--r-- | event/filter/filter.go | 8 |
2 files changed, 24 insertions, 6 deletions
diff --git a/event/filter/old_filter.go b/event/filter/eth_filter.go index 1a9a88173..295fcfbbf 100644 --- a/event/filter/old_filter.go +++ b/event/filter/eth_filter.go @@ -1,6 +1,7 @@ -// XXX This is the old filter system specifically for messages. This is till in used and could use some refactoring package filter +// TODO make use of the generic filtering system + import ( "sync" @@ -59,7 +60,7 @@ func (self *FilterManager) GetFilter(id int) *core.Filter { func (self *FilterManager) filterLoop() { // Subscribe to events - events := self.eventMux.Subscribe(core.NewBlockEvent{}, state.Messages(nil)) + events := self.eventMux.Subscribe(core.PendingBlockEvent{}, core.NewBlockEvent{}, state.Logs(nil)) out: for { @@ -77,13 +78,22 @@ out: } self.filterMu.RUnlock() - case state.Messages: + case core.PendingBlockEvent: + self.filterMu.RLock() + for _, filter := range self.filters { + if filter.PendingCallback != nil { + filter.PendingCallback(event.Block) + } + } + self.filterMu.RUnlock() + + case state.Logs: self.filterMu.RLock() for _, filter := range self.filters { - if filter.MessageCallback != nil { - msgs := filter.FilterMessages(event) + if filter.LogsCallback != nil { + msgs := filter.FilterLogs(event) if len(msgs) > 0 { - filter.MessageCallback(msgs) + filter.LogsCallback(msgs) } } } diff --git a/event/filter/filter.go b/event/filter/filter.go index 9817d5782..ca767f413 100644 --- a/event/filter/filter.go +++ b/event/filter/filter.go @@ -68,3 +68,11 @@ out: } } } + +func (self *Filters) Match(a, b Filter) bool { + return reflect.TypeOf(a) == reflect.TypeOf(b) && a.Compare(b) +} + +func (self *Filters) Get(i int) Filter { + return self.watchers[i] +} |