Jelajahi Sumber

refactor rpcx, export WithDialOption and WithTimeout

kevin 4 tahun lalu
induk
melakukan
08fa64d553

+ 1 - 1
example/graceful/dns/api/svc/servicecontext.go

@@ -3,5 +3,5 @@ package svc
 import "github.com/tal-tech/go-zero/rpcx"
 
 type ServiceContext struct {
-	Client *rpcx.RpcClient
+	Client rpcx.Client
 }

+ 1 - 1
example/graceful/etcd/api/svc/servicecontext.go

@@ -3,5 +3,5 @@ package svc
 import "github.com/tal-tech/go-zero/rpcx"
 
 type ServiceContext struct {
-	Client *rpcx.RpcClient
+	Client rpcx.Client
 }

+ 1 - 1
example/tracing/edge/main.go

@@ -15,7 +15,7 @@ import (
 
 var (
 	configFile = flag.String("f", "config.json", "the config file")
-	client     *rpcx.RpcClient
+	client     rpcx.Client
 )
 
 func handle(w http.ResponseWriter, r *http.Request) {

+ 2 - 2
example/tracing/portal/server.go

@@ -20,11 +20,11 @@ type (
 	}
 
 	PortalServer struct {
-		userRpc *rpcx.RpcClient
+		userRpc rpcx.Client
 	}
 )
 
-func NewPortalServer(client *rpcx.RpcClient) *PortalServer {
+func NewPortalServer(client rpcx.Client) *PortalServer {
 	return &PortalServer{
 		userRpc: client,
 	}

+ 20 - 9
rpcx/client.go

@@ -10,11 +10,22 @@ import (
 	"google.golang.org/grpc"
 )
 
-type RpcClient struct {
-	client internal.Client
-}
+var (
+	WithDialOption = internal.WithDialOption
+	WithTimeout    = internal.WithTimeout
+)
+
+type (
+	Client interface {
+		Conn() *grpc.ClientConn
+	}
+
+	RpcClient struct {
+		client Client
+	}
+)
 
-func MustNewClient(c RpcClientConf, options ...internal.ClientOption) *RpcClient {
+func MustNewClient(c RpcClientConf, options ...internal.ClientOption) Client {
 	cli, err := NewClient(c, options...)
 	if err != nil {
 		log.Fatal(err)
@@ -23,20 +34,20 @@ func MustNewClient(c RpcClientConf, options ...internal.ClientOption) *RpcClient
 	return cli
 }
 
-func NewClient(c RpcClientConf, options ...internal.ClientOption) (*RpcClient, error) {
+func NewClient(c RpcClientConf, options ...internal.ClientOption) (Client, error) {
 	var opts []internal.ClientOption
 	if c.HasCredential() {
-		opts = append(opts, internal.WithDialOption(grpc.WithPerRPCCredentials(&auth.Credential{
+		opts = append(opts, WithDialOption(grpc.WithPerRPCCredentials(&auth.Credential{
 			App:   c.App,
 			Token: c.Token,
 		})))
 	}
 	if c.Timeout > 0 {
-		opts = append(opts, internal.WithTimeout(time.Duration(c.Timeout)*time.Millisecond))
+		opts = append(opts, WithTimeout(time.Duration(c.Timeout)*time.Millisecond))
 	}
 	opts = append(opts, options...)
 
-	var client internal.Client
+	var client Client
 	var err error
 	if len(c.Server) > 0 {
 		client, err = internal.NewDirectClient(c.Server, opts...)
@@ -52,7 +63,7 @@ func NewClient(c RpcClientConf, options ...internal.ClientOption) (*RpcClient, e
 	}, nil
 }
 
-func NewClientNoAuth(c discov.EtcdConf) (*RpcClient, error) {
+func NewClientNoAuth(c discov.EtcdConf) (Client, error) {
 	client, err := internal.NewDiscovClient(c.Hosts, c.Key)
 	if err != nil {
 		return nil, err

+ 0 - 4
rpcx/internal/client.go

@@ -18,10 +18,6 @@ type (
 	}
 
 	ClientOption func(options *ClientOptions)
-
-	Client interface {
-		Conn() *grpc.ClientConn
-	}
 )
 
 func WithDialOption(opt grpc.DialOption) ClientOption {

+ 2 - 2
rpcx/proxy.go

@@ -12,7 +12,7 @@ import (
 
 type RpcProxy struct {
 	backend     string
-	clients     map[string]*RpcClient
+	clients     map[string]Client
 	options     []internal.ClientOption
 	sharedCalls syncx.SharedCalls
 	lock        sync.Mutex
@@ -21,7 +21,7 @@ type RpcProxy struct {
 func NewRpcProxy(backend string, opts ...internal.ClientOption) *RpcProxy {
 	return &RpcProxy{
 		backend:     backend,
-		clients:     make(map[string]*RpcClient),
+		clients:     make(map[string]Client),
 		options:     opts,
 		sharedCalls: syncx.NewSharedCalls(),
 	}