directbuilder.go 608 B

123456789101112131415161718192021222324252627282930
  1. package resolver
  2. import (
  3. "strings"
  4. "google.golang.org/grpc/resolver"
  5. )
  6. type directBuilder struct{}
  7. func (d *directBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOptions) (
  8. resolver.Resolver, error) {
  9. var addrs []resolver.Address
  10. endpoints := strings.Split(target.Endpoint, EndpointSep)
  11. for _, val := range subset(endpoints, subsetSize) {
  12. addrs = append(addrs, resolver.Address{
  13. Addr: val,
  14. })
  15. }
  16. cc.UpdateState(resolver.State{
  17. Addresses: addrs,
  18. })
  19. return &nopResolver{cc: cc}, nil
  20. }
  21. func (d *directBuilder) Scheme() string {
  22. return DirectScheme
  23. }