diff --git a/registry/etcdv3/listener.go b/registry/etcdv3/listener.go index 61c71ee48e529b36b094d5c2532b15471515fcff..da6a46b15cf76231a3921c13d4f0bb8d94c13538 100644 --- a/registry/etcdv3/listener.go +++ b/registry/etcdv3/listener.go @@ -34,20 +34,17 @@ import ( ) type dataListener struct { - interestedURL map[string]*common.URL + interestedURL []*common.URL listener config_center.ConfigurationListener } // NewRegistryDataListener ... func NewRegistryDataListener(listener config_center.ConfigurationListener) *dataListener { - return &dataListener{listener: listener, interestedURL: make(map[string]*common.URL, 16)} + return &dataListener{listener: listener, interestedURL: make([]*common.URL, 16)} } func (l *dataListener) AddInterestedURL(url *common.URL) { - if _, ok := l.interestedURL[url.String()]; ok { - return - } - l.interestedURL[url.String()] = url + l.interestedURL = append(l.interestedURL, url) } func (l *dataListener) DataChange(eventType remoting.Event) bool { @@ -59,18 +56,19 @@ func (l *dataListener) DataChange(eventType remoting.Event) bool { return false } - if _, ok := l.interestedURL[serviceURL.String()]; !ok { - return false + for _, v := range l.interestedURL { + if serviceURL.URLEqual(*v) { + l.listener.Process( + &config_center.ConfigChangeEvent{ + Key: eventType.Path, + Value: serviceURL, + ConfigType: eventType.Action, + }, + ) + return true + } } - - l.listener.Process( - &config_center.ConfigChangeEvent{ - Key: eventType.Path, - Value: serviceURL, - ConfigType: eventType.Action, - }, - ) - return true + return false } type configurationListener struct { diff --git a/registry/kubernetes/listener.go b/registry/kubernetes/listener.go index d9164e714311d098f7312485caad87105a357d8d..b1593e6fc83b01acee2b5f6fe71d1781f78986b5 100644 --- a/registry/kubernetes/listener.go +++ b/registry/kubernetes/listener.go @@ -34,23 +34,19 @@ import ( ) type dataListener struct { - interestedURL map[string]*common.URL + interestedURL []*common.URL listener config_center.ConfigurationListener } // NewRegistryDataListener // new the data listener, the interest url default len 16 func NewRegistryDataListener(listener config_center.ConfigurationListener) *dataListener { - return &dataListener{listener: listener, interestedURL: make(map[string]*common.URL, 16)} + return &dataListener{listener: listener, interestedURL: make([]*common.URL, 16)} } // AddInterestedURL func (l *dataListener) AddInterestedURL(url *common.URL) { - - if _, ok := l.interestedURL[url.String()]; ok { - return - } - l.interestedURL[url.String()] = url + l.interestedURL = append(l.interestedURL, url) } // DataChange @@ -65,9 +61,7 @@ func (l *dataListener) DataChange(eventType remoting.Event) bool { } for _, v := range l.interestedURL { - if serviceURL.URLEqual(*v) { - l.listener.Process( &config_center.ConfigChangeEvent{ Key: eventType.Path, diff --git a/registry/zookeeper/listener.go b/registry/zookeeper/listener.go index 0c46261b39471e2794e3508b65cc5b28b10e80dc..6b7f7aa0e3e0d0c8a24a41d715d4ded28885412b 100644 --- a/registry/zookeeper/listener.go +++ b/registry/zookeeper/listener.go @@ -37,21 +37,18 @@ import ( // RegistryDataListener ... type RegistryDataListener struct { - interestedURL map[string]*common.URL + interestedURL []*common.URL listener config_center.ConfigurationListener } // NewRegistryDataListener ... func NewRegistryDataListener(listener config_center.ConfigurationListener) *RegistryDataListener { - return &RegistryDataListener{listener: listener, interestedURL: make(map[string]*common.URL, 16)} + return &RegistryDataListener{listener: listener, interestedURL: make([]*common.URL, 16)} } // AddInterestedURL ... func (l *RegistryDataListener) AddInterestedURL(url *common.URL) { - if _, ok := l.interestedURL[url.String()]; ok { - return - } - l.interestedURL[url.String()] = url + l.interestedURL = append(l.interestedURL, url) } // DataChange ... @@ -69,18 +66,19 @@ func (l *RegistryDataListener) DataChange(eventType remoting.Event) bool { return false } - if _, ok := l.interestedURL[serviceURL.String()]; !ok { - return false + for _, v := range l.interestedURL { + if serviceURL.URLEqual(*v) { + l.listener.Process( + &config_center.ConfigChangeEvent{ + Key: eventType.Path, + Value: serviceURL, + ConfigType: eventType.Action, + }, + ) + return true + } } - - l.listener.Process( - &config_center.ConfigChangeEvent{ - Key: eventType.Path, - Value: serviceURL, - ConfigType: eventType.Action, - }, - ) - return true + return false } // RegistryConfigurationListener ...