Documentation ¶
Overview ¶
This package implements the correlation functionality as specified in the OpenTelemetry specification. Currently it provides a data structure for storing correlations (Map) and a way of putting Map object into the context and retrieving it from context.
Index ¶
- func ContextWithGetHook(ctx context.Context, hook GetHookFunc) context.Context
- func ContextWithMap(ctx context.Context, m Map) context.Context
- func ContextWithNoHooks(ctx context.Context) (context.Context, SetHookFunc, GetHookFunc)
- func ContextWithSetHook(ctx context.Context, hook SetHookFunc) context.Context
- func DefaultHTTPPropagator() propagation.HTTPPropagator
- func NewContext(ctx context.Context, keyvalues ...kv.KeyValue) context.Context
- type CorrelationContext
- type GetHookFunc
- type Map
- type MapUpdate
- type SetHookFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ContextWithGetHook ¶
func ContextWithGetHook(ctx context.Context, hook GetHookFunc) context.Context
ContextWithGetHook installs a hook function that will be invoked every time MapFromContext is called. To avoid unnecessary callback invocations (recursive or not), the callback can temporarily clear the hooks from the context with the ContextWithNoHooks function.
Note that NewContext also calls MapFromContext, so the hook will be invoked.
Passing nil GetHookFunc creates a context with no get hook to call.
This function should not be used by applications or libraries. It is mostly for interoperation with other observability APIs.
func ContextWithMap ¶
ContextWithMap returns a context with the Map entered into it.
func ContextWithNoHooks ¶
func ContextWithNoHooks(ctx context.Context) (context.Context, SetHookFunc, GetHookFunc)
ContextWithNoHooks creates a context with all the hooks disabled. Also returns old set and get hooks. This function can be used to temporarily clear the context from hooks and then reinstate them by calling ContextWithSetHook and ContextWithGetHook functions passing the hooks returned by this function.
This function should not be used by applications or libraries. It is mostly for interoperation with other observability APIs.
func ContextWithSetHook ¶
func ContextWithSetHook(ctx context.Context, hook SetHookFunc) context.Context
ContextWithSetHook installs a hook function that will be invoked every time ContextWithMap is called. To avoid unnecessary callback invocations (recursive or not), the callback can temporarily clear the hooks from the context with the ContextWithNoHooks function.
Note that NewContext also calls ContextWithMap, so the hook will be invoked.
Passing nil SetHookFunc creates a context with no set hook to call.
This function should not be used by applications or libraries. It is mostly for interoperation with other observability APIs.
func DefaultHTTPPropagator ¶
func DefaultHTTPPropagator() propagation.HTTPPropagator
DefaultHTTPPropagator returns the default context correlation HTTP propagator.
Types ¶
type CorrelationContext ¶
type CorrelationContext struct{}
CorrelationContext propagates Key:Values in W3C CorrelationContext format. nolint:golint
func (CorrelationContext) Extract ¶
func (CorrelationContext) Extract(ctx context.Context, supplier propagation.HTTPSupplier) context.Context
Extract implements HTTPExtractor.
func (CorrelationContext) GetAllKeys ¶
func (CorrelationContext) GetAllKeys() []string
GetAllKeys implements HTTPPropagator.
func (CorrelationContext) Inject ¶
func (CorrelationContext) Inject(ctx context.Context, supplier propagation.HTTPSupplier)
Inject implements HTTPInjector.
type GetHookFunc ¶
GetHookFunc describes a type of a callback that is called when getting baggage from the context.
type Map ¶
type Map struct {
// contains filtered or unexported fields
}
Map is an immutable storage for correlations.
func MapFromContext ¶
MapFromContext gets the current Map from a Context.
func NewMap ¶
NewMap creates a map with the contents of the update applied. In this function, having an update with DropSingleK or DropMultiK makes no sense - those fields are effectively ignored.
func (Map) Apply ¶
Apply creates a copy of the map with the contents of the update applied. Apply will first drop the keys from DropSingleK and DropMultiK, then add key-value pairs from SingleKV and MultiKV.
func (Map) Foreach ¶
Foreach calls a passed callback once on each key-value pair until all the key-value pairs of the map were iterated or the callback returns false, whichever happens first.
type MapUpdate ¶
type MapUpdate struct { // DropSingleK contains a single key to be dropped from // correlations. Use this to avoid an overhead of a slice // allocation if there is only one key to drop. DropSingleK kv.Key // DropMultiK contains all the keys to be dropped from // correlations. DropMultiK []kv.Key // SingleKV contains a single key-value pair to be added to // correlations. Use this to avoid an overhead of a slice // allocation if there is only one key-value pair to add. SingleKV kv.KeyValue // MultiKV contains all the key-value pairs to be added to // correlations. MultiKV []kv.KeyValue }
MapUpdate contains information about correlation changes to be made.