Hunter0x7c7
2022-08-11 a82f9cb69f63aaeba40c024960deda7d75b9fece
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package router
 
import (
    sync "sync"
)
 
func (r *Router) OverrideBalancer(balancer string, target string) error {
    var b *Balancer
    for tag, bl := range r.balancers {
        if tag == balancer {
            b = bl
            break
        }
    }
    if b == nil {
        return newError("balancer '", balancer, "' not found")
    }
    b.override.Put(target)
    return nil
}
 
type overrideSettings struct {
    target string
}
 
type override struct {
    access   sync.RWMutex
    settings overrideSettings
}
 
// Get gets the override settings
func (o *override) Get() string {
    o.access.RLock()
    defer o.access.RUnlock()
    return o.settings.target
}
 
// Put updates the override settings
func (o *override) Put(target string) {
    o.access.Lock()
    defer o.access.Unlock()
    o.settings.target = target
}
 
// Clear clears the override settings
func (o *override) Clear() {
    o.access.Lock()
    defer o.access.Unlock()
    o.settings.target = ""
}