func NewGCPMultiEndpoint()

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
}