5 type Filter interface {
6 DoFilter(string, string) error
9 type PeerFilter struct {
14 func NewPeerFilter() *PeerFilter {
16 filterChain: make([]Filter, 0),
20 func (pf *PeerFilter) register(filter Filter) {
24 pf.filterChain = append(pf.filterChain, filter)
27 func (pf *PeerFilter) doFilter(ip string, pubKey string) error {
29 defer pf.mtx.RUnlock()
31 for _, filter := range pf.filterChain {
32 if err := filter.DoFilter(ip, pubKey); err != nil {