Interface SpanContext


  • @Immutable
    public interface SpanContext
    A class that represents a span context. A span context contains the state that must propagate to child Spans and across process boundaries. It contains the identifiers (a trace_id and span_id) associated with the Span and a set of options (currently only whether the context is sampled or not), as well as the traceState and the remote flag.

    Implementations of this interface *must* be immutable and have well-defined value-based equals/hashCode implementations. If an implementation does not strictly conform to these requirements, behavior of the OpenTelemetry APIs and default SDK cannot be guaranteed. It is strongly suggested that you use the implementation that is provided here via create(String, String, byte, TraceState) or createFromRemoteParent(String, String, byte, TraceState).

    • Method Detail

      • getInvalid

        static SpanContext getInvalid()
        Returns the invalid SpanContext that can be used for no-op operations.
        Returns:
        the invalid SpanContext.
      • create

        static SpanContext create​(String traceIdHex,
                                  String spanIdHex,
                                  byte traceFlags,
                                  TraceState traceState)
        Creates a new SpanContext with the given identifiers and options.
        Parameters:
        traceIdHex - the trace identifier of the span context.
        spanIdHex - the span identifier of the span context.
        traceFlags - the byte representation of the TraceFlags
        traceState - the trace state for the span context.
        Returns:
        a new SpanContext with the given identifiers and options.
      • createFromRemoteParent

        static SpanContext createFromRemoteParent​(String traceIdHex,
                                                  String spanIdHex,
                                                  byte traceFlags,
                                                  TraceState traceState)
        Creates a new SpanContext that was propagated from a remote parent, with the given identifiers and options.
        Parameters:
        traceIdHex - the trace identifier of the span context.
        spanIdHex - the span identifier of the span context.
        traceFlags - the byte representation of the TraceFlags
        traceState - the trace state for the span context.
        Returns:
        a new SpanContext with the given identifiers and options.
      • getTraceIdAsHexString

        String getTraceIdAsHexString()
        Returns the trace identifier associated with this SpanContext.
        Returns:
        the trace identifier associated with this SpanContext.
      • getTraceIdBytes

        default byte[] getTraceIdBytes()
        Returns the byte[] representation of the trace identifier associated with this SpanContext.
      • getSpanIdAsHexString

        String getSpanIdAsHexString()
        Returns the span identifier associated with this SpanContext.
        Returns:
        the span identifier associated with this SpanContext.
      • getSpanIdBytes

        default byte[] getSpanIdBytes()
        Returns the byte[] representation of the span identifier associated with this SpanContext.
      • isSampled

        default boolean isSampled()
        Whether the span in this context is sampled.
      • getTraceFlags

        byte getTraceFlags()
        The byte-representation of TraceFlags.
      • copyTraceFlagsHexTo

        default void copyTraceFlagsHexTo​(char[] dest,
                                         int destOffset)
      • getTraceState

        TraceState getTraceState()
        Returns the TraceState associated with this SpanContext.
        Returns:
        the TraceState associated with this SpanContext.
      • isValid

        default boolean isValid()
        Returns true if this SpanContext is valid.
        Returns:
        true if this SpanContext is valid.
      • isRemote

        boolean isRemote()
        Returns true if the SpanContext was propagated from a remote parent.
        Returns:
        true if the SpanContext was propagated from a remote parent.