in grpcgcp/gcp_multiendpoint.go [192:216]
func NewGCPMultiEndpoint(meOpts *GCPMultiEndpointOptions, opts ...grpc.DialOption) (*GCPMultiEndpoint, error) {
// Read config, create multiendpoints and pools.
o, err := makeOpts(meOpts, opts)
if err != nil {
return nil, err
}
gme := &GCPMultiEndpoint{
mes: make(map[string]multiendpoint.MultiEndpoint),
pools: make(map[string]*monitoredConn),
defaultName: meOpts.Default,
opts: o,
gcpConfig: proto.Clone(meOpts.GRPCgcpConfig).(*pb.ApiConfig),
dialFunc: meOpts.DialFunc,
log: NewGCPLogger(compLogger, fmt.Sprintf("[GCPMultiEndpoint #%d]", atomic.AddUint32(&gmeCounter, 1))),
}
if gme.dialFunc == nil {
gme.dialFunc = func(_ context.Context, target string, opts ...grpc.DialOption) (*grpc.ClientConn, error) {
return grpc.Dial(target, opts...)
}
}
if err := gme.UpdateMultiEndpoints(meOpts); err != nil {
return nil, err
}
return gme, nil
}