Documentation
¶
Overview ¶
Package rkgrpcinter provides common utility functions for middleware of grpc framework
Index ¶
- Constants
- Variables
- func AddToClientContextPayload(ctx context.Context, key string, value interface{})
- func AddToServerContextPayload(ctx context.Context, key string, value interface{})
- func ContainsClientPayload(ctx context.Context) bool
- func ContainsServerPayload(ctx context.Context) bool
- func GetClientContextPayload(ctx context.Context) map[string]interface{}
- func GetClientPayloadKey() interface{}
- func GetGrpcInfo(fullMethod string) (grpcService, grpcMethod string)
- func GetGwInfo(md metadata.MD) (gwMethod, gwPath, gwScheme, gwUserAgent string)
- func GetIncomingHeadersOfClient(ctx context.Context) *metadata.MD
- func GetOutgoingHeadersOfClient(ctx context.Context) *metadata.MD
- func GetRemoteAddressSet(ctx context.Context) (ip, port, netType string)
- func GetRemoteAddressSetFromMeta(md metadata.MD) (ip, port string)
- func GetServerContextPayload(ctx context.Context) map[string]interface{}
- func GetServerPayloadKey() interface{}
- func MergeAndDeduplicateSlice(src []string, target []string) []string
- func MergeToOutgoingMD(ctx context.Context, md metadata.MD) context.Context
- func NewClientPayload() clientPayload
- func ToOptionsKey(entryName, rpcType string) string
- func WrapContextForServer(ctx context.Context) context.Context
Constants ¶
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 ¶
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()) )
var RpcPayloadAppended = rpcPayloadAppended{}
RpcPayloadAppended a flag used in inner middleware
Functions ¶
func AddToClientContextPayload ¶
AddToClientContextPayload add k/v into payload injected into client side context
func AddToServerContextPayload ¶
AddToServerContextPayload add k/v into payload injected into server side context
func ContainsClientPayload ¶
ContainsClientPayload is payload injected into client side context?
func ContainsServerPayload ¶
ContainsServerPayload is payload injected into server side context?
func GetClientContextPayload ¶
GetClientContextPayload get payload injected into client side context
func GetClientPayloadKey ¶
func GetClientPayloadKey() interface{}
GetClientPayloadKey get client payload key used in context.Context
func GetGrpcInfo ¶
GetGrpcInfo Extract grpc related information from fullMethod.
func GetIncomingHeadersOfClient ¶
GetIncomingHeadersOfClient get incoming header from client
func GetOutgoingHeadersOfClient ¶
GetOutgoingHeadersOfClient get outgoing header from client
func GetRemoteAddressSet ¶
GetRemoteAddressSet Read remote Ip and port from metadata first.
func GetRemoteAddressSetFromMeta ¶
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 ¶
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 ¶
MergeAndDeduplicateSlice Merge src and targets and deduplicate
func MergeToOutgoingMD ¶
MergeToOutgoingMD Merge md to context outgoing metadata.
func NewClientPayload ¶
func NewClientPayload() clientPayload
NewClientPayload create new client side payload
func ToOptionsKey ¶
ToOptionsKey Convert to optionsMap key with entry name and rpcType.
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 |