single_endpoint.go raw

   1  package endpoints
   2  
   3  import (
   4  	"context"
   5  
   6  	"google.golang.org/grpc"
   7  	"google.golang.org/protobuf/reflect/protoreflect"
   8  )
   9  
  10  // NewSingleEndpointResolver creates an EndpointsResolver that resolves to a single gRPC endpoint with specified options.
  11  func NewSingleEndpointResolver(addr string, opts ...grpc.DialOption) EndpointsResolver {
  12  	return singleEndpointResolver{&Endpoint{
  13  		Addr:        addr,
  14  		DialOptions: opts,
  15  	}}
  16  }
  17  
  18  // SingleEndpointResolver returns an EndpointsResolver that always resolves to the specified single Endpoint.
  19  func SingleEndpointResolver(e *Endpoint) EndpointsResolver { return singleEndpointResolver{e} }
  20  
  21  // singleEndpointResolver is a resolver that always returns a single predefined Endpoint instance.
  22  type singleEndpointResolver struct{ e *Endpoint }
  23  
  24  // Endpoint resolves and returns a gRPC endpoint along with its connection options, based on the resolver configuration.
  25  func (o singleEndpointResolver) Endpoint(_ context.Context, _ protoreflect.FullName, _ ...grpc.CallOption) (*Endpoint, error) {
  26  	return o.e, nil
  27  }
  28