Baggage is a propagator that supports the W3C Baggage format.
This propagates user-defined baggage associated with a trace. The complete specification is defined at https://www.w3.org/TR/baggage/.
type Baggage struct{}
func (b Baggage) Extract(parent context.Context, carrier TextMapCarrier) context.Context
Extract returns a copy of parent with the baggage from the carrier added.
func (b Baggage) Fields() []string
Fields returns the keys who's values are set with Inject.
func (b Baggage) Inject(ctx context.Context, carrier TextMapCarrier)
Inject sets baggage key-values from ctx into the carrier.
HeaderCarrier adapts http.Header to satisfy the TextMapCarrier interface.
type HeaderCarrier http.Header
func (hc HeaderCarrier) Get(key string) string
Get returns the value associated with the passed key.
func (hc HeaderCarrier) Keys() []string
Keys lists the keys stored in this carrier.
func (hc HeaderCarrier) Set(key string, value string)
Set stores the key-value pair.
MapCarrier is a TextMapCarrier that uses a map held in memory as a storage medium for propagated key-value pairs.
type MapCarrier map[string]string
func (c MapCarrier) Get(key string) string
Get returns the value associated with the passed key.
func (c MapCarrier) Keys() []string
Keys lists the keys stored in this carrier.
func (c MapCarrier) Set(key, value string)
Set stores the key-value pair.
TextMapCarrier is the storage medium used by a TextMapPropagator.
type TextMapCarrier interface { // Get returns the value associated with the passed key. Get(key string) string // Set stores the key-value pair. Set(key string, value string) // Keys lists the keys stored in this carrier. Keys() []string }
TextMapPropagator propagates cross-cutting concerns as key-value text pairs within a carrier that travels in-band across process boundaries.
type TextMapPropagator interface { // Inject set cross-cutting concerns from the Context into the carrier. Inject(ctx context.Context, carrier TextMapCarrier) // Extract reads cross-cutting concerns from the carrier into a Context. Extract(ctx context.Context, carrier TextMapCarrier) context.Context // Fields returns the keys whose values are set with Inject. Fields() []string }
func NewCompositeTextMapPropagator(p ...TextMapPropagator) TextMapPropagator
NewCompositeTextMapPropagator returns a unified TextMapPropagator from the group of passed TextMapPropagator. This allows different cross-cutting concerns to be propagates in a unified manner.
The returned TextMapPropagator will inject and extract cross-cutting concerns in the order the TextMapPropagators were provided. Additionally, the Fields method will return a de-duplicated slice of the keys that are set with the Inject method.
TraceContext is a propagator that supports the W3C Trace Context format (https://www.w3.org/TR/trace-context/)
This propagator will propagate the traceparent and tracestate headers to guarantee traces are not broken. It is up to the users of this propagator to choose if they want to participate in a trace by modifying the traceparent header and relevant parts of the tracestate header containing their proprietary information.
type TraceContext struct{}
▹ Example
func (tc TraceContext) Extract(ctx context.Context, carrier TextMapCarrier) context.Context
Extract reads tracecontext from the carrier into a returned Context.
The returned Context will be a copy of ctx and contain the extracted tracecontext as the remote SpanContext. If the extracted tracecontext is invalid, the passed ctx will be returned directly instead.
func (tc TraceContext) Fields() []string
Fields returns the keys who's values are set with Inject.
func (tc TraceContext) Inject(ctx context.Context, carrier TextMapCarrier)
Inject set tracecontext from the Context into the carrier.