Sha256: 24780bf3fda72a991299352bfaf2bb277f652665124eb125c0487ad17d145dc7

Contents?: true

Size: 1.97 KB

Versions: 5

Compression:

Stored size: 1.97 KB

Contents

# frozen_string_literal: true

# Copyright 2019 OpenTelemetry Authors
#
# SPDX-License-Identifier: Apache-2.0

module OpenTelemetry
  module Trace
    # A SpanContext contains the state that must propagate to child {Span}s and across process boundaries.
    # It contains the identifiers (a trace ID and span ID) associated with the {Span}, a set of
    # {TraceFlags}, a system-specific tracestate, and a boolean indicating that the SpanContext was
    # extracted from the wire.
    class SpanContext
      attr_reader :trace_id, :span_id, :trace_flags, :tracestate

      # Returns a new {SpanContext}.
      #
      # @param [optional String] trace_id The trace ID associated with a {Span}.
      # @param [optional String] span_id The span ID associated with a {Span}.
      # @param [optional TraceFlags] trace_flags The trace flags associated with a {Span}.
      # @param [optional String] tracestate The tracestate associated with a {Span}. May be nil.
      # @param [optional Boolean] remote Whether the {SpanContext} was extracted from the wire.
      # @return [SpanContext]
      def initialize(
        trace_id: Trace.generate_trace_id,
        span_id: Trace.generate_span_id,
        trace_flags: TraceFlags::DEFAULT,
        tracestate: nil,
        remote: false
      )
        @trace_id = trace_id
        @span_id = span_id
        @trace_flags = trace_flags
        @tracestate = tracestate
        @remote = remote
      end

      # Returns true if the {SpanContext} has a non-zero trace ID and non-zero span ID.
      #
      # @return [Boolean]
      def valid?
        @trace_id != INVALID_TRACE_ID && @span_id != INVALID_SPAN_ID
      end

      # Returns true if the {SpanContext} was propagated from a remote parent.
      #
      # @return [Boolean]
      def remote?
        @remote
      end

      # Represents an invalid {SpanContext}, with an invalid trace ID and an invalid span ID.
      INVALID = new(trace_id: INVALID_TRACE_ID, span_id: INVALID_SPAN_ID)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
opentelemetry-api-0.5.1 lib/opentelemetry/trace/span_context.rb
opentelemetry-api-0.5.0 lib/opentelemetry/trace/span_context.rb
opentelemetry-api-0.4.0 lib/opentelemetry/trace/span_context.rb
opentelemetry-api-0.3.0 lib/opentelemetry/trace/span_context.rb
opentelemetry-api-0.2.0 lib/opentelemetry/trace/span_context.rb