requestid

package module
v4.0.7 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: 9 Imported by: 0

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 x-request-id

Functions

func NewClientCallWrapper

func NewClientCallWrapper() client.CallWrapper

func NewClientWrapper

func NewClientWrapper() client.Wrapper

func NewServerHandlerWrapper

func NewServerHandlerWrapper() server.HandlerWrapper

Types

type XRequestIDKey added in v4.0.1

type XRequestIDKey struct{}

Jump to

Keyboard shortcuts

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