feat:support custom callopts on client side

Signed-off-by: haoyun <yun.hao@daocloud.io>
This commit is contained in:
haoyun 2021-11-16 11:31:33 +08:00
parent 7020719646
commit 547040cd5b
2 changed files with 16 additions and 4 deletions

View File

@ -124,14 +124,17 @@ func New(address string, opts ...ClientOpt) (*Client, error) {
grpc.WithConnectParams(connParams), grpc.WithConnectParams(connParams),
grpc.WithContextDialer(dialer.ContextDialer), grpc.WithContextDialer(dialer.ContextDialer),
grpc.WithReturnConnectionError(), grpc.WithReturnConnectionError(),
// TODO(stevvooe): We may need to allow configuration of this on the client.
grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(defaults.DefaultMaxRecvMsgSize)),
grpc.WithDefaultCallOptions(grpc.MaxCallSendMsgSize(defaults.DefaultMaxSendMsgSize)),
} }
if len(copts.dialOptions) > 0 { if len(copts.dialOptions) > 0 {
gopts = copts.dialOptions gopts = copts.dialOptions
} }
if len(copts.callOptions) > 0 {
gopts = append(gopts, grpc.WithDefaultCallOptions(copts.callOptions...))
} else {
gopts = append(gopts, grpc.WithDefaultCallOptions(
grpc.MaxCallRecvMsgSize(defaults.DefaultMaxRecvMsgSize),
grpc.MaxCallSendMsgSize(defaults.DefaultMaxSendMsgSize)))
}
if copts.defaultns != "" { if copts.defaultns != "" {
unary, stream := newNSInterceptors(copts.defaultns) unary, stream := newNSInterceptors(copts.defaultns)
gopts = append(gopts, gopts = append(gopts,

View File

@ -34,6 +34,7 @@ type clientOpts struct {
defaultPlatform platforms.MatchComparer defaultPlatform platforms.MatchComparer
services *services services *services
dialOptions []grpc.DialOption dialOptions []grpc.DialOption
callOptions []grpc.CallOption
timeout time.Duration timeout time.Duration
} }
@ -75,6 +76,14 @@ func WithDialOpts(opts []grpc.DialOption) ClientOpt {
} }
} }
// WithCallOpts allows grpc.CallOptions to be set on the connection
func WithCallOpts(opts []grpc.CallOption) ClientOpt {
return func(c *clientOpts) error {
c.callOptions = opts
return nil
}
}
// WithServices sets services used by the client. // WithServices sets services used by the client.
func WithServices(opts ...ServicesOpt) ClientOpt { func WithServices(opts ...ServicesOpt) ClientOpt {
return func(c *clientOpts) error { return func(c *clientOpts) error {