diff options
| author | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2024-07-17 11:20:59 +0200 |
|---|---|---|
| committer | Jeroen Wijenbergh <46386452+jwijenbergh@users.noreply.github.com> | 2024-07-17 14:00:03 +0000 |
| commit | 7276108171b1c6af417ce5ae86ef0221280932c1 (patch) | |
| tree | 3decc148de89b9ae3b3b6d04de35fea71ffb4c3b /client/discovery.go | |
| parent | 5362dd10bf13f8087a13a4ab5441efa04755fcc7 (diff) | |
Client + Server: Pass discovery manager and lock when needed
Diffstat (limited to 'client/discovery.go')
| -rw-r--r-- | client/discovery.go | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/client/discovery.go b/client/discovery.go index 2816d10..6cc76f6 100644 --- a/client/discovery.go +++ b/client/discovery.go @@ -4,11 +4,8 @@ import ( "context" "sort" "strings" - "sync" "github.com/eduvpn/eduvpn-common/i18nerr" - "github.com/eduvpn/eduvpn-common/internal/discovery" - "github.com/eduvpn/eduvpn-common/internal/log" "github.com/eduvpn/eduvpn-common/types/cookie" discotypes "github.com/eduvpn/eduvpn-common/types/discovery" ) @@ -138,79 +135,3 @@ func (c *Client) DiscoveryStartup(cb func()) error { c.discoMan.Startup(context.Background(), fcb) return nil } - -type DiscoManager struct { - disco *discovery.Discovery - - cancel context.CancelFunc - mu sync.RWMutex - wait sync.WaitGroup -} - -func (m *DiscoManager) lock(write bool) { - log.Logger.Debugf("Locking write: %v", write) - if write { - m.mu.Lock() - return - } - m.mu.RLock() -} - -func (m *DiscoManager) unlock(write bool) { - log.Logger.Debugf("Unlocking write: %v", write) - if write { - m.mu.Unlock() - return - } - m.mu.RUnlock() -} - -func (m *DiscoManager) Discovery(write bool) (*discovery.Discovery, func()) { - log.Logger.Debugf("Requesting discovery write: %v", write) - if write { - m.wait.Wait() - } - m.lock(write) - return m.disco, func() { - m.unlock(write) - } -} - -func (m *DiscoManager) Cancel() { - if m.cancel != nil { - m.cancel() - } - m.wait.Wait() -} - -func (m *DiscoManager) Startup(ctx context.Context, cb func()) { - ctx, cancel := context.WithCancel(ctx) - m.cancel = cancel - m.wait.Add(1) - go func() { - m.lock(false) - discoCopy, err := m.disco.Copy() - if err != nil { - log.Logger.Warningf("internal error, failed to clone discovery, %v", err) - return - } - m.unlock(false) - // we already log the warning - discoCopy.Servers(ctx) //nolint:errcheck - - m.lock(true) - m.disco.UpdateServers(discoCopy) - m.unlock(true) - m.wait.Done() - - select { - case <-ctx.Done(): - return - default: - if cb == nil { - return - } - cb() - } - }() -} |
