From 25f366c794852ae1ab69104cde71b83e78b1044b Mon Sep 17 00:00:00 2001 From: scott <scottwangsxll@gmail.com> Date: Sun, 15 Mar 2020 23:02:03 +0800 Subject: [PATCH] Fix listener slice -> map --- registry/etcdv3/listener.go | 32 +++++++++++++++----------------- registry/kubernetes/listener.go | 12 +++--------- registry/zookeeper/listener.go | 32 +++++++++++++++----------------- 3 files changed, 33 insertions(+), 43 deletions(-) diff --git a/registry/etcdv3/listener.go b/registry/etcdv3/listener.go index 61c71ee48..da6a46b15 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 d9164e714..b1593e6fc 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 0c46261b3..6b7f7aa0e 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 ... -- GitLab