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() {}