Documentation
¶
Overview ¶
Package grpcx provide helpers for typical gRPC client/server.
Index ¶
- func AccessToken(ctx Ctx) string
- func AccessTokenCreds(accessToken string) grpc.CallOption
- func Dial(ctx Ctx, addr, service string, metrics *grpc_prometheus.ClientMetrics, ...) (*grpc.ClientConn, error)
- func DialOptions(ca *x509.CertPool) []grpc.DialOption
- func MakeStreamClientLogger(service string, skip int) grpc.StreamClientInterceptor
- func MakeStreamServerAuthn(authn AuthnFunc) grpc.StreamServerInterceptor
- func MakeStreamServerLogger(service string, skip int) grpc.StreamServerInterceptor
- func MakeStreamServerRecover(metric def.Metrics) grpc.StreamServerInterceptor
- func MakeUnaryClientLogger(service string, skip int) grpc.UnaryClientInterceptor
- func MakeUnaryServerAuthn(authn AuthnFunc) grpc.UnaryServerInterceptor
- func MakeUnaryServerLogger(service string, skip int) grpc.UnaryServerInterceptor
- func MakeUnaryServerRecover(metric def.Metrics) grpc.UnaryServerInterceptor
- func NewClientMetrics(reg *prometheus.Registry, namespace, subsystem string) *grpc_prometheus.ClientMetrics
- func NewServer(service string, metric def.Metrics, ...) (server *grpc.Server, healthServer *health.Server)
- func NewServerMetrics(reg *prometheus.Registry, namespace, subsystem string) *grpc_prometheus.ServerMetrics
- func RemoteIP(ctx Ctx, xffAllowedFrom func(peerIP string) bool) string
- func StreamClientAccessLog(ctx Ctx, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, ...) (grpc.ClientStream, error)
- func StreamServerAccessLog(srv interface{}, stream grpc.ServerStream, info *grpc.StreamServerInfo, ...) (err error)
- func UnaryClientAccessLog(ctx Ctx, method string, req, reply interface{}, cc *grpc.ClientConn, ...) error
- func UnaryServerAccessLog(ctx Ctx, req interface{}, info *grpc.UnaryServerInfo, ...) (_ interface{}, err error)
- type AuthnFunc
- type Ctx
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AccessToken ¶ added in v0.5.0
AccessToken returns "Bearer" AccessToken from authorization metadata, if any.
func AccessTokenCreds ¶ added in v0.5.0
func AccessTokenCreds(accessToken string) grpc.CallOption
AccessTokenCreds returns a CallOption that sets credentials.PerRPCCredentials using OAuth2 "Bearer" AccessToken.
func Dial ¶
func Dial(ctx Ctx, addr, service string, metrics *grpc_prometheus.ClientMetrics, ca *x509.CertPool) (*grpc.ClientConn, error)
Dial creates a gRPC client connection to the given target.
func DialOptions ¶
func DialOptions(ca *x509.CertPool) []grpc.DialOption
DialOptions returns default connection options without interceptors.
func MakeStreamClientLogger ¶
func MakeStreamClientLogger(service string, skip int) grpc.StreamClientInterceptor
MakeStreamClientLogger returns a new stream client interceptor that contains request logger.
func MakeStreamServerAuthn ¶
func MakeStreamServerAuthn(authn AuthnFunc) grpc.StreamServerInterceptor
MakeStreamServerAuthn returns a new stream server interceptor that checks authentication.
func MakeStreamServerLogger ¶
func MakeStreamServerLogger(service string, skip int) grpc.StreamServerInterceptor
MakeStreamServerLogger returns a new stream server interceptor that contains request logger.
func MakeStreamServerRecover ¶
func MakeStreamServerRecover(metric def.Metrics) grpc.StreamServerInterceptor
MakeStreamServerRecover returns a new stream server interceptor that recover and logs panic.
func MakeUnaryClientLogger ¶
func MakeUnaryClientLogger(service string, skip int) grpc.UnaryClientInterceptor
MakeUnaryClientLogger returns a new unary client interceptor that contains request logger.
func MakeUnaryServerAuthn ¶
func MakeUnaryServerAuthn(authn AuthnFunc) grpc.UnaryServerInterceptor
MakeUnaryServerAuthn returns a new unary server interceptor that checks authentication.
func MakeUnaryServerLogger ¶
func MakeUnaryServerLogger(service string, skip int) grpc.UnaryServerInterceptor
MakeUnaryServerLogger returns a new unary server interceptor that contains request logger.
func MakeUnaryServerRecover ¶
func MakeUnaryServerRecover(metric def.Metrics) grpc.UnaryServerInterceptor
MakeUnaryServerRecover returns a new unary server interceptor that recover and logs panic.
func NewClientMetrics ¶
func NewClientMetrics(reg *prometheus.Registry, namespace, subsystem string) *grpc_prometheus.ClientMetrics
NewClientMetrics returns gRPC client metrics.
func NewServer ¶
func NewServer( service string, metric def.Metrics, serverMetrics *grpc_prometheus.ServerMetrics, cert *tls.Certificate, extraUnary []grpc.UnaryServerInterceptor, extraStream []grpc.StreamServerInterceptor, ) (server *grpc.Server, healthServer *health.Server)
NewServer creates and returns a gRPC server which:
- has configured TLS,
- has configured keep-alive,
- setup interceptor to provide prometheus metrics,
- setup interceptor to store request-scooped logger inside context,
- setup interceptor to recover from panics,
- setup interceptor to log method access/result,
- has reflection service registered,
- has health service registered,
- has not started to accept requests yet.
It also returns health server which may be used to control status returned by health service (set to SERVING by default).
func NewServerMetrics ¶
func NewServerMetrics(reg *prometheus.Registry, namespace, subsystem string) *grpc_prometheus.ServerMetrics
NewServerMetrics returns gRPC server metrics. Do not forget to call .InitializeMetrics(server) on returned value.
func RemoteIP ¶ added in v0.5.0
RemoteIP returns either peer IP, or IP from X-Forwarded-For metadata key provided by allowed peer, or empty string if neither is available.
func StreamClientAccessLog ¶
func StreamClientAccessLog(ctx Ctx, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error)
StreamClientAccessLog returns a new stream client interceptor that logs request status.
func StreamServerAccessLog ¶
func StreamServerAccessLog(srv interface{}, stream grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) (err error)
StreamServerAccessLog returns a new stream server interceptor that logs request status.
func UnaryClientAccessLog ¶
func UnaryClientAccessLog(ctx Ctx, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error
UnaryClientAccessLog returns a new unary client interceptor that logs request status.
func UnaryServerAccessLog ¶
func UnaryServerAccessLog(ctx Ctx, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (_ interface{}, err error)
UnaryServerAccessLog returns a new unary server interceptor that logs request status.