1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
# frozen_string_literal: true
module Jaeger
# SpanContext holds the data for a span that gets inherited to child spans
class SpanContext
module Flags
NONE = 0x00
SAMPLED = 0x01
DEBUG = 0x02
end
def self.create_from_parent_context(span_context)
new(
trace_id: span_context.trace_id,
parent_id: span_context.span_id,
span_id: TraceId.generate,
flags: span_context.flags,
baggage: span_context.baggage.dup
)
end
attr_accessor :flags
attr_reader :span_id, :parent_id, :trace_id, :baggage
def initialize(span_id:, trace_id:, flags:, parent_id: 0, baggage: {})
@span_id = span_id
@parent_id = parent_id
@trace_id = trace_id
@baggage = baggage
@flags = flags
end
def sampled?
@flags & Flags::SAMPLED == Flags::SAMPLED
end
def debug?
@flags & Flags::DEBUG == Flags::DEBUG
end
def to_trace_id
@to_trace_id ||= @trace_id.to_s(16)
end
def to_span_id
@to_span_id ||= @span_id.to_s(16)
end
def set_baggage_item(key, value)
@baggage[key.to_s] = value.to_s
end
def get_baggage_item(key)
@baggage[key.to_s]
end
end
end
|