skip nil options

This commit is contained in:
Chris Lu 2019-02-16 12:49:58 -08:00
parent 98a03b38e5
commit 55761ae806

View file

@ -17,24 +17,37 @@ var (
grpcClientsLock sync.Mutex grpcClientsLock sync.Mutex
) )
func NewGrpcServer() *grpc.Server { func NewGrpcServer(opts ...grpc.ServerOption) *grpc.Server {
return grpc.NewServer(grpc.KeepaliveParams(keepalive.ServerParameters{ var options []grpc.ServerOption
options = append(options, grpc.KeepaliveParams(keepalive.ServerParameters{
Time: 10 * time.Second, // wait time before ping if no activity Time: 10 * time.Second, // wait time before ping if no activity
Timeout: 20 * time.Second, // ping timeout Timeout: 20 * time.Second, // ping timeout
}), grpc.KeepaliveEnforcementPolicy(keepalive.EnforcementPolicy{ }), grpc.KeepaliveEnforcementPolicy(keepalive.EnforcementPolicy{
MinTime: 60 * time.Second, // min time a client should wait before sending a ping MinTime: 60 * time.Second, // min time a client should wait before sending a ping
})) }))
for _, opt := range opts {
if opt != nil {
options = append(options, opt)
}
}
return grpc.NewServer(options...)
} }
func GrpcDial(address string, opts ...grpc.DialOption) (*grpc.ClientConn, error) { func GrpcDial(address string, opts ...grpc.DialOption) (*grpc.ClientConn, error) {
// opts = append(opts, grpc.WithBlock()) // opts = append(opts, grpc.WithBlock())
// opts = append(opts, grpc.WithTimeout(time.Duration(5*time.Second))) // opts = append(opts, grpc.WithTimeout(time.Duration(5*time.Second)))
opts = append(opts, grpc.WithInsecure()) var options []grpc.DialOption
opts = append(opts, grpc.WithKeepaliveParams(keepalive.ClientParameters{ options = append(options,
Time: 30 * time.Second, // client ping server if no activity for this long grpc.WithInsecure(),
Timeout: 20 * time.Second, grpc.WithKeepaliveParams(keepalive.ClientParameters{
})) Time: 30 * time.Second, // client ping server if no activity for this long
Timeout: 20 * time.Second,
}))
for _, opt := range opts {
if opt != nil {
options = append(options, opt)
}
}
return grpc.Dial(address, opts...) return grpc.Dial(address, opts...)
} }