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