Class W3CTraceContextPropagator
java.lang.Object
io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator
- All Implemented Interfaces:
TextMapPropagator
Implementation of the W3C TraceContext propagation protocol. See W3C Trace Context.
This is the default propagator for SpanContext
s. The SpanContext
type is
designed to support all the data propagated via W3C propagation natively.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final W3CTraceContextPropagator
private static final Logger
private static final int
private static final int
private static final int
private static final int
private static final int
private static final int
(package private) static final String
(package private) static final String
private static final char
private static final int
private static final int
private static final String
private static final String
private static final int
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription<C> Context
extract
(Context context, C carrier, TextMapGetter<C> getter) Extracts data from upstream.private static SpanContext
extractContextFromTraceParent
(String traceparent) private static <C> SpanContext
extractImpl
(C carrier, TextMapGetter<C> getter) fields()
The propagation fields defined.static W3CTraceContextPropagator
Returns a singleton instance of aTextMapPropagator
implementing the W3C TraceContext propagation.<C> void
inject
(Context context, C carrier, TextMapSetter<C> setter) Injects data for downstream consumers, for example as HTTP headers.toString()
-
Field Details
-
logger
-
TRACE_PARENT
- See Also:
-
TRACE_STATE
- See Also:
-
FIELDS
-
VERSION
- See Also:
-
VERSION_SIZE
private static final int VERSION_SIZE- See Also:
-
TRACEPARENT_DELIMITER
private static final char TRACEPARENT_DELIMITER- See Also:
-
TRACEPARENT_DELIMITER_SIZE
private static final int TRACEPARENT_DELIMITER_SIZE- See Also:
-
TRACE_ID_HEX_SIZE
private static final int TRACE_ID_HEX_SIZE -
SPAN_ID_HEX_SIZE
private static final int SPAN_ID_HEX_SIZE -
TRACE_OPTION_HEX_SIZE
private static final int TRACE_OPTION_HEX_SIZE -
TRACE_ID_OFFSET
private static final int TRACE_ID_OFFSET- See Also:
-
SPAN_ID_OFFSET
private static final int SPAN_ID_OFFSET -
TRACE_OPTION_OFFSET
private static final int TRACE_OPTION_OFFSET -
TRACEPARENT_HEADER_SIZE
private static final int TRACEPARENT_HEADER_SIZE -
VALID_VERSIONS
-
VERSION_00
- See Also:
-
INSTANCE
-
-
Constructor Details
-
W3CTraceContextPropagator
private W3CTraceContextPropagator()
-
-
Method Details
-
getInstance
Returns a singleton instance of aTextMapPropagator
implementing the W3C TraceContext propagation. -
fields
Description copied from interface:TextMapPropagator
The propagation fields defined. If your carrier is reused, you should delete the fields here before callingTextMapPropagator.inject(Context, Object, TextMapSetter)
)}.For example, if the carrier is a single-use or immutable request object, you don't need to clear fields as they couldn't have been set before. If it is a mutable, retryable object, successive calls should clear these fields first.
Some use cases for this are:
- Allow pre-allocation of fields, especially in systems like gRPC Metadata
- Allow a single-pass over an iterator
- Specified by:
fields
in interfaceTextMapPropagator
- Returns:
- the fields that will be used by this formatter.
-
inject
Description copied from interface:TextMapPropagator
Injects data for downstream consumers, for example as HTTP headers. The carrier may be null to facilitate calling this method with a lambda for theTextMapSetter
, in which case that null will be passed to theTextMapSetter
implementation.- Specified by:
inject
in interfaceTextMapPropagator
- Type Parameters:
C
- carrier of propagation fields, such as an http request- Parameters:
context
- theContext
containing the value to be injected.carrier
- holds propagation fields. For example, an outgoing message or http request.setter
- invoked for each propagation key to add or remove.
-
extract
Description copied from interface:TextMapPropagator
Extracts data from upstream. For example, from incoming http headers. The returned Context should contain the extracted data, if any, merged with the data from the passed-in Context.If the incoming information could not be parsed, implementations MUST return the original Context, unaltered.
- Specified by:
extract
in interfaceTextMapPropagator
- Type Parameters:
C
- the type of carrier of the propagation fields, such as an http request.- Parameters:
context
- theContext
used to store the extracted value.carrier
- holds propagation fields. For example, an outgoing message or http request.getter
- invoked for each propagation key to get data from the carrier.- Returns:
- the
Context
containing the extracted data.
-
extractImpl
-
extractContextFromTraceParent
-
toString
-