github.com/projecteru2/core@v0.0.0-20240321043226-06bcc1c23f58/client/servicediscovery/resolver.go (about) 1 package servicediscovery 2 3 import ( 4 "google.golang.org/grpc/resolver" 5 ) 6 7 type lbResolver struct { 8 cc resolver.ClientConn 9 } 10 11 func newLBResolver(cc resolver.ClientConn, endpoint string, updateCh <-chan []string) *lbResolver { 12 r := &lbResolver{cc: cc} 13 r.updateAddresses(endpoint) 14 go func() { 15 for { 16 r.updateAddresses(<-updateCh...) 17 } 18 }() 19 return r 20 } 21 22 func (r *lbResolver) updateAddresses(endpoints ...string) { 23 addresses := []resolver.Address{} 24 for _, ep := range endpoints { 25 addresses = append(addresses, resolver.Address{Addr: ep}) 26 } 27 r.cc.UpdateState(resolver.State{Addresses: addresses}) //nolint 28 } 29 30 func (r *lbResolver) ResolveNow(_ resolver.ResolveNowOptions) {} 31 32 func (r lbResolver) Close() {}