github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/event/filter/generic_filter.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 12:09:39</date> 10 //</624342639872839680> 11 12 13 package filter 14 15 type Generic struct { 16 Str1, Str2, Str3 string 17 Data map[string]struct{} 18 19 Fn func(data interface{}) 20 } 21 22 //self=已注册,f=传入 23 func (self Generic) Compare(f Filter) bool { 24 var strMatch, dataMatch = true, true 25 26 filter := f.(Generic) 27 if (len(self.Str1) > 0 && filter.Str1 != self.Str1) || 28 (len(self.Str2) > 0 && filter.Str2 != self.Str2) || 29 (len(self.Str3) > 0 && filter.Str3 != self.Str3) { 30 strMatch = false 31 } 32 33 for k := range self.Data { 34 if _, ok := filter.Data[k]; !ok { 35 return false 36 } 37 } 38 39 return strMatch && dataMatch 40 } 41 42 func (self Generic) Trigger(data interface{}) { 43 self.Fn(data) 44 } 45