summaryrefslogtreecommitdiff
path: root/client/discovery.go
diff options
context:
space:
mode:
authorjwijenbergh <jeroenwijenbergh@protonmail.com>2024-07-17 11:20:59 +0200
committerJeroen Wijenbergh <46386452+jwijenbergh@users.noreply.github.com>2024-07-17 14:00:03 +0000
commit7276108171b1c6af417ce5ae86ef0221280932c1 (patch)
tree3decc148de89b9ae3b3b6d04de35fea71ffb4c3b /client/discovery.go
parent5362dd10bf13f8087a13a4ab5441efa04755fcc7 (diff)
Client + Server: Pass discovery manager and lock when needed
Diffstat (limited to 'client/discovery.go')
-rw-r--r--client/discovery.go79
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()
- }
- }()
-}