rkgrpcinter

package
v1.2.5 Latest Latest
Warning

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

Go to latest
Published: Sep 26, 2021 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Overview

Package rkgrpcinter provides common utility functions for middleware of grpc framework

Index

Constants

View Source
const (
	// RpcEntryNameKey default entry name key of grpc
	RpcEntryNameKey = "grpcEntryName"
	// RpcEntryNameValue default entry name value of grpc
	RpcEntryNameValue = "grpc"
	// RpcEntryTypeKey default entry type key of grpc
	RpcEntryTypeKey = "grpcEntryType"
	// RpcEntryTypeValue default entry type value of grpc
	RpcEntryTypeValue = "grpc"

	// RpcEventKey event key in grpc context
	RpcEventKey = "grpcEvent"
	// RpcLoggerKey logger key in grpc context
	RpcLoggerKey = "grpcLogger"
	// RpcMethodKey RPC method key in grpc context
	RpcMethodKey = "grpcMethod"
	// RpcErrorKey RPC error key in grpc context
	RpcErrorKey = "grpcError"

	// RpcTypeKey RPC type key in grpc context
	RpcTypeKey = "grpcType"
	// RpcTracerKey tracer key in grpc context
	RpcTracerKey = "grpcTracer"
	// RpcSpanKey Span key in grpc context
	RpcSpanKey = "grpcSpan"
	// RpcTracerProviderKey tracer provider key in grpc context
	RpcTracerProviderKey = "grpcTracerProvider"
	// RpcPropagatorKey propagator key in grpc context
	RpcPropagatorKey = "grpcPropagator"

	// RpcAuthorizationHeaderKey basic auth header key in request
	RpcAuthorizationHeaderKey = "authorization"
	// RpcApiKeyHeaderKey api key header in request
	RpcApiKeyHeaderKey = "X-API-Key"

	// RpcTypeUnaryServer unary RPC server type key in context
	RpcTypeUnaryServer = "unaryServer"
	// RpcTypeStreamServer stream RPC server type key in context
	RpcTypeStreamServer = "streamServer"
	// RpcTypeUnaryClient unary RPC client type key in context
	RpcTypeUnaryClient = "unaryClient"
	// RpcTypeStreamClient stream RPC client type in context
	RpcTypeStreamClient = "streamClient"
)

Variables

View Source
var (
	// Realm environment variable
	Realm = zap.String("realm", rkcommon.GetEnvValueOrDefault("REALM", "*"))
	// Region environment variable
	Region = zap.String("region", rkcommon.GetEnvValueOrDefault("REGION", "*"))
	// AZ environment variable
	AZ = zap.String("az", rkcommon.GetEnvValueOrDefault("AZ", "*"))
	// Domain environment variable
	Domain = zap.String("domain", rkcommon.GetEnvValueOrDefault("DOMAIN", "*"))
	// LocalIp read local IP from localhost
	LocalIp = zap.String("localIp", rkcommon.GetLocalIP())
	// LocalHostname read hostname from localhost
	LocalHostname = zap.String("localHostname", rkcommon.GetLocalHostname())
)
View Source
var RpcPayloadAppended = rpcPayloadAppended{}

RpcPayloadAppended a flag used in inner middleware

Functions

func AddToClientContextPayload

func AddToClientContextPayload(ctx context.Context, key string, value interface{})

AddToClientContextPayload add k/v into payload injected into client side context

func AddToServerContextPayload

func AddToServerContextPayload(ctx context.Context, key string, value interface{})

AddToServerContextPayload add k/v into payload injected into server side context

func ContainsClientPayload

func ContainsClientPayload(ctx context.Context) bool

ContainsClientPayload is payload injected into client side context?

func ContainsServerPayload

func ContainsServerPayload(ctx context.Context) bool

ContainsServerPayload is payload injected into server side context?

func GetClientContextPayload

func GetClientContextPayload(ctx context.Context) map[string]interface{}

GetClientContextPayload get payload injected into client side context

func GetClientPayloadKey

func GetClientPayloadKey() interface{}

GetClientPayloadKey get client payload key used in context.Context

func GetGrpcInfo

func GetGrpcInfo(fullMethod string) (grpcService, grpcMethod string)

GetGrpcInfo Extract grpc related information from fullMethod.

func GetGwInfo

func GetGwInfo(md metadata.MD) (gwMethod, gwPath, gwScheme, gwUserAgent string)

GetGwInfo Extract gateway related information from metadata.

func GetIncomingHeadersOfClient

func GetIncomingHeadersOfClient(ctx context.Context) *metadata.MD

GetIncomingHeadersOfClient get incoming header from client

func GetOutgoingHeadersOfClient

func GetOutgoingHeadersOfClient(ctx context.Context) *metadata.MD

GetOutgoingHeadersOfClient get outgoing header from client

func GetRemoteAddressSet

func GetRemoteAddressSet(ctx context.Context) (ip, port, netType string)

GetRemoteAddressSet Read remote Ip and port from metadata first.

func GetRemoteAddressSetFromMeta

func GetRemoteAddressSetFromMeta(md metadata.MD) (ip, port string)

GetRemoteAddressSetFromMeta Read remote Ip and port from metadata. If user enabled RK style gateway server mux option, then there would be bellow headers forwarded to grpc metadata 1: x-forwarded-method 2: x-forwarded-path 3: x-forwarded-scheme 4: x-forwarded-user-agent 5: x-forwarded-remote-addr

func GetServerContextPayload

func GetServerContextPayload(ctx context.Context) map[string]interface{}

GetServerContextPayload get context payload injected into server side context

func GetServerPayloadKey added in v1.2.2

func GetServerPayloadKey() interface{}

GetServerPayloadKey get server payload key used in context.Context

func MergeAndDeduplicateSlice

func MergeAndDeduplicateSlice(src []string, target []string) []string

MergeAndDeduplicateSlice Merge src and targets and deduplicate

func MergeToOutgoingMD

func MergeToOutgoingMD(ctx context.Context, md metadata.MD) context.Context

MergeToOutgoingMD Merge md to context outgoing metadata.

func NewClientPayload

func NewClientPayload() clientPayload

NewClientPayload create new client side payload

func ToOptionsKey

func ToOptionsKey(entryName, rpcType string) string

ToOptionsKey Convert to optionsMap key with entry name and rpcType.

func WrapContextForServer

func WrapContextForServer(ctx context.Context) context.Context

WrapContextForServer Wrap server context.

Types

This section is empty.

Directories

Path Synopsis
Package rkgrpcauth is auth interceptor for grpc framework
Package rkgrpcauth is auth interceptor for grpc framework
Package rkgrpcctx provides utility functions deal with metadata in RPC context
Package rkgrpcctx provides utility functions deal with metadata in RPC context
log
zap
Package rkgrpclog is an interface of logging for grpc framework
Package rkgrpclog is an interface of logging for grpc framework
Package rkgrpcmeta is a middleware of grpc framework for adding metadata in RPC response
Package rkgrpcmeta is a middleware of grpc framework for adding metadata in RPC response
metrics
prom
Package rkgrpcmetrics is a middleware for grpc framework which record prometheus metrics for RPC
Package rkgrpcmetrics is a middleware for grpc framework which record prometheus metrics for RPC
Package rkgrpcpanic is a middleware of grpc framework for recovering from panic
Package rkgrpcpanic is a middleware of grpc framework for recovering from panic
tracing
telemetry
Package rkgrpctrace is aa middleware of grpc framework for recording trace info of RPC
Package rkgrpctrace is aa middleware of grpc framework for recording trace info of RPC

Jump to

Keyboard shortcuts

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