grpcx

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 11, 2020 License: MIT Imports: 22 Imported by: 0

Documentation

Overview

Package grpcx provide helpers for typical gRPC client/server.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

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,
	authn AuthnFunc,
) (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,
  • setup interceptor to check authentication using given authn,
  • 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 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 Token

func Token(token string) grpc.CallOption

Token returns option with "Bearer" token.

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.

Types

type AuthnFunc

type AuthnFunc func(_ Ctx, fullMethod string) (Ctx, error)

AuthnFunc provides a way to check authentication using interceptor. FullMethod is the full RPC method string, i.e., /package.service/method. It usually either returns error with codes.Unauthenticated or Ctx with extra value describing current authentication for use in handlers.

type Ctx

type Ctx = context.Context

Ctx is a synonym for convenience.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL