From a22229cd1b55129f1efc1c7c7406cdd66f8db6c1 Mon Sep 17 00:00:00 2001 From: lyyyuna Date: Wed, 16 Sep 2020 17:16:57 +0800 Subject: [PATCH] add store remove --- pkg/cover/store.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/pkg/cover/store.go b/pkg/cover/store.go index f36520d..d549c2f 100644 --- a/pkg/cover/store.go +++ b/pkg/cover/store.go @@ -45,6 +45,9 @@ type Store interface { // Set stores the services information into internal state Set(services map[string][]string) + + // Remove the service from the store + Remove(s Service) error } // fileStore holds the registered services into memory and persistent to a local file @@ -245,3 +248,19 @@ func (l *memoryStore) Set(services map[string][]string) { l.servicesMap = services } + +func (l *memoryStore) Remove(s Service) error { + l.mu.Lock() + defer l.mu.Unlock() + + services := l.servicesMap[s.Name] + newServices := make([]string, 0) + for _, addr := range services { + if addr != s.Address { + newServices = append(newServices, addr) + } + } + l.servicesMap[s.Name] = newServices + + return nil +}