requestid

package module
v3.8.10 Latest Latest
Warning

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

Go to latest
Published: Mar 11, 2024 License: Apache-2.0 Imports: 8 Imported by: 4

README

micro-wrapper-requestid

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultMetadataFunc = func(ctx context.Context) (context.Context, error) {
	var xid string

	cid, cok := ctx.Value(XRequestIDKey{}).(string)
	if cok && cid != "" {
		xid = cid
	}

	imd, iok := metadata.FromIncomingContext(ctx)
	if !iok || imd == nil {
		imd = metadata.New(1)
		ctx = metadata.NewIncomingContext(ctx, imd)
	}

	omd, ook := metadata.FromOutgoingContext(ctx)
	if !ook || omd == nil {
		omd = metadata.New(1)
		ctx = metadata.NewOutgoingContext(ctx, omd)
	}

	if xid == "" {
		var id string
		if id, iok = imd.Get(DefaultMetadataKey); iok && id != "" {
			xid = id
		}
		if id, ook = omd.Get(DefaultMetadataKey); ook && id != "" {
			xid = id
		}
	}

	if xid == "" {
		var err error
		xid, err = id.New()
		if err != nil {
			return ctx, err
		}
	}

	if !cok {
		ctx = context.WithValue(ctx, XRequestIDKey{}, xid)
	}

	if !iok {
		imd.Set(DefaultMetadataKey, xid)
	}

	if !ook {
		omd.Set(DefaultMetadataKey, xid)
	}

	return ctx, nil
}

DefaultMetadataFunc wil be used if user not provide own func to fill metadata

View Source
var DefaultMetadataKey = textproto.CanonicalMIMEHeaderKey("x-request-id")

DefaultMetadataKey contains metadata key

Functions

func NewClientCallWrapper

func NewClientCallWrapper() client.CallWrapper

func NewClientWrapper

func NewClientWrapper() client.Wrapper

func NewServerHandlerWrapper

func NewServerHandlerWrapper() server.HandlerWrapper

func NewServerSubscriberWrapper

func NewServerSubscriberWrapper() server.SubscriberWrapper

Types

type XRequestIDKey added in v3.8.3

type XRequestIDKey struct{}

Jump to

Keyboard shortcuts

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