...
1
18
19 package priority
20
21 import (
22 "sync/atomic"
23
24 "google.golang.org/grpc/balancer"
25 "google.golang.org/grpc/resolver"
26 )
27
28
29
30 type ignoreResolveNowClientConn struct {
31 balancer.ClientConn
32 ignoreResolveNow *uint32
33 }
34
35 func newIgnoreResolveNowClientConn(cc balancer.ClientConn, ignore bool) *ignoreResolveNowClientConn {
36 ret := &ignoreResolveNowClientConn{
37 ClientConn: cc,
38 ignoreResolveNow: new(uint32),
39 }
40 ret.updateIgnoreResolveNow(ignore)
41 return ret
42 }
43
44 func (i *ignoreResolveNowClientConn) updateIgnoreResolveNow(b bool) {
45 if b {
46 atomic.StoreUint32(i.ignoreResolveNow, 1)
47 return
48 }
49 atomic.StoreUint32(i.ignoreResolveNow, 0)
50
51 }
52
53 func (i ignoreResolveNowClientConn) ResolveNow(o resolver.ResolveNowOptions) {
54 if atomic.LoadUint32(i.ignoreResolveNow) != 0 {
55 return
56 }
57 i.ClientConn.ResolveNow(o)
58 }
59
View as plain text