func (client *Client) dialPool(tablet *topodatapb.Tablet) (tabletmanagerservicepb.TabletManagerClient, error) { addr := netutil.JoinHostPort(tablet.Hostname, int32(tablet.PortMap["grpc"])) opt, err := grpcutils.ClientSecureDialOption(*cert, *key, *ca, *name) if err != nil { return nil, err } client.mu.Lock() if client.rpcClientMap == nil { client.rpcClientMap = make(map[string]chan *tmc) } c, ok := client.rpcClientMap[addr] if !ok { c = make(chan *tmc, *concurrency) client.rpcClientMap[addr] = c client.mu.Unlock() for i := 0; i < cap(c); i++ { cc, err := grpc.Dial(addr, opt) if err != nil { return nil, err } c <- &tmc{ cc: cc, client: tabletmanagerservicepb.NewTabletManagerClient(cc), } } } else { client.mu.Unlock() } result := <-c c <- result return result.client, nil }
// DialTablet creates and initializes gRPCQueryClient. func DialTablet(tablet *topodatapb.Tablet, timeout time.Duration) (tabletconn.TabletConn, error) { // create the RPC client addr := "" if grpcPort, ok := tablet.PortMap["grpc"]; ok { addr = netutil.JoinHostPort(tablet.Hostname, grpcPort) } else { addr = tablet.Hostname } opt, err := grpcutils.ClientSecureDialOption(*cert, *key, *ca, *name) if err != nil { return nil, err } opts := []grpc.DialOption{opt} if timeout > 0 { opts = append(opts, grpc.WithBlock(), grpc.WithTimeout(timeout)) } cc, err := grpc.Dial(addr, opts...) if err != nil { return nil, err } c := queryservicepb.NewQueryClient(cc) result := &gRPCQueryClient{ tablet: tablet, cc: cc, c: c, } return result, nil }
// DialTablet creates and initializes gRPCQueryClient. func DialTablet(ctx context.Context, tablet *topodatapb.Tablet, timeout time.Duration) (tabletconn.TabletConn, error) { // create the RPC client addr := netutil.JoinHostPort(tablet.Hostname, tablet.PortMap["grpc"]) opt, err := grpcutils.ClientSecureDialOption(*cert, *key, *ca, *name) if err != nil { return nil, err } cc, err := grpc.Dial(addr, opt, grpc.WithBlock(), grpc.WithTimeout(timeout)) if err != nil { return nil, err } c := queryservicepb.NewQueryClient(cc) result := &gRPCQueryClient{ tablet: tablet, cc: cc, c: c, target: &querypb.Target{ Keyspace: tablet.Keyspace, Shard: tablet.Shard, TabletType: tablet.Type, }, } return result, nil }
// dial returns a client to use func (client *Client) dial(tablet *topodatapb.Tablet) (*grpc.ClientConn, tabletmanagerservicepb.TabletManagerClient, error) { addr := netutil.JoinHostPort(tablet.Hostname, int32(tablet.PortMap["grpc"])) opt, err := grpcutils.ClientSecureDialOption(*cert, *key, *ca, *name) if err != nil { return nil, nil, err } cc, err := grpc.Dial(addr, opt) if err != nil { return nil, nil, err } return cc, tabletmanagerservicepb.NewTabletManagerClient(cc), nil }
func factory(addr string) (throttlerclient.Client, error) { opt, err := grpcutils.ClientSecureDialOption(*cert, *key, *ca, *name) if err != nil { return nil, err } conn, err := grpc.Dial(addr, opt) if err != nil { return nil, err } gRPCClient := throttlerservice.NewThrottlerClient(conn) return &client{conn, gRPCClient}, nil }
func dial(ctx context.Context, addr string, timeout time.Duration) (vtgateconn.Impl, error) { opt, err := grpcutils.ClientSecureDialOption(*cert, *key, *ca, *name) if err != nil { return nil, err } cc, err := grpc.Dial(addr, opt, grpc.WithBlock(), grpc.WithTimeout(timeout)) if err != nil { return nil, err } c := vtgateservicepb.NewVitessClient(cc) return &vtgateConn{ cc: cc, c: c, }, nil }
func gRPCVtworkerClientFactory(addr string, dialTimeout time.Duration) (vtworkerclient.Client, error) { // create the RPC client opt, err := grpcutils.ClientSecureDialOption(*cert, *key, *ca, *name) if err != nil { return nil, err } cc, err := grpc.Dial(addr, opt, grpc.WithBlock(), grpc.WithTimeout(dialTimeout)) if err != nil { return nil, vterrors.NewVitessError(vtrpcpb.ErrorCode_DEADLINE_EXCEEDED, err, "grpc.Dial() err: %v", err) } c := vtworkerservicepb.NewVtworkerClient(cc) return &gRPCVtworkerClient{ cc: cc, c: c, }, nil }
func gRPCVtworkerClientFactory(addr string, dialTimeout time.Duration) (vtworkerclient.Client, error) { // create the RPC client opt, err := grpcutils.ClientSecureDialOption(*cert, *key, *ca, *name) if err != nil { return nil, err } cc, err := grpc.Dial(addr, opt, grpc.WithBlock(), grpc.WithTimeout(dialTimeout)) if err != nil { return nil, err } c := vtworkerservicepb.NewVtworkerClient(cc) return &gRPCVtworkerClient{ cc: cc, c: c, }, nil }