aboutsummaryrefslogtreecommitdiffstats
path: root/whisper/whisperv6/filter.go
diff options
context:
space:
mode:
Diffstat (limited to 'whisper/whisperv6/filter.go')
-rw-r--r--whisper/whisperv6/filter.go15
1 files changed, 9 insertions, 6 deletions
diff --git a/whisper/whisperv6/filter.go b/whisper/whisperv6/filter.go
index d7b71795d..e4171f85c 100644
--- a/whisper/whisperv6/filter.go
+++ b/whisper/whisperv6/filter.go
@@ -43,9 +43,10 @@ type Filter struct {
// Filters represents a collection of filters
type Filters struct {
- watchers map[string]*Filter
- topicMatcher map[TopicType]map[*Filter]struct{}
- allTopicsMatcher map[*Filter]struct{}
+ watchers map[string]*Filter
+
+ topicMatcher map[TopicType]map[*Filter]struct{} // map a topic to the filters that are interested in being notified when a message matches that topic
+ allTopicsMatcher map[*Filter]struct{} // list all the filters that will be notified of a new message, no matter what its topic is
whisper *Whisper
mutex sync.RWMutex
@@ -106,7 +107,9 @@ func (fs *Filters) Uninstall(id string) bool {
return false
}
-// addTopicMatcher adds a filter to the topic matchers
+// addTopicMatcher adds a filter to the topic matchers.
+// If the filter's Topics array is empty, it will be tried on every topic.
+// Otherwise, it will be tried on the topics specified.
func (fs *Filters) addTopicMatcher(watcher *Filter) {
if len(watcher.Topics) == 0 {
fs.allTopicsMatcher[watcher] = struct{}{}
@@ -133,10 +136,10 @@ func (fs *Filters) removeFromTopicMatchers(watcher *Filter) {
// match a specific topic
func (fs *Filters) getWatchersByTopic(topic TopicType) []*Filter {
res := make([]*Filter, 0, len(fs.allTopicsMatcher))
- for watcher, _ := range fs.allTopicsMatcher {
+ for watcher := range fs.allTopicsMatcher {
res = append(res, watcher)
}
- for watcher, _ := range fs.topicMatcher[topic] {
+ for watcher := range fs.topicMatcher[topic] {
res = append(res, watcher)
}
return res