discovclient.go 708 B

1234567891011121314151617181920212223242526272829303132333435
  1. package internal
  2. import (
  3. "fmt"
  4. "strings"
  5. "zero/rpcx/internal/balancer/p2c"
  6. "zero/rpcx/internal/resolver"
  7. "google.golang.org/grpc"
  8. )
  9. func init() {
  10. resolver.RegisterResolver()
  11. }
  12. type DiscovClient struct {
  13. conn *grpc.ClientConn
  14. }
  15. func NewDiscovClient(endpoints []string, key string, opts ...ClientOption) (*DiscovClient, error) {
  16. opts = append(opts, WithDialOption(grpc.WithBalancerName(p2c.Name)))
  17. target := fmt.Sprintf("%s://%s/%s", resolver.DiscovScheme,
  18. strings.Join(endpoints, resolver.EndpointSep), key)
  19. conn, err := dial(target, opts...)
  20. if err != nil {
  21. return nil, err
  22. }
  23. return &DiscovClient{conn: conn}, nil
  24. }
  25. func (c *DiscovClient) Conn() *grpc.ClientConn {
  26. return c.conn
  27. }