module Datadog::OpenTracer::TextMapPropagator
OpenTracing propagator for Datadog::OpenTracer::Tracer
Constants
- BAGGAGE_PREFIX
Public Class Methods
extract(carrier)
click to toggle source
Extract a SpanContext
in TextMap format from the given carrier.
@param carrier [Carrier] A carrier object of TextMap type @return [SpanContext, nil] the extracted SpanContext
or nil if none could be found
# File lib/ddtrace/opentracer/text_map_propagator.rb, line 40 def extract(carrier) # First extract & build a Datadog context headers = DistributedHeaders.new(carrier) datadog_context = if headers.valid? Datadog::Context.new( trace_id: headers.trace_id, span_id: headers.parent_id, sampling_priority: headers.sampling_priority, origin: headers.origin ) else Datadog::Context.new end # Then extract any other baggage baggage = {} carrier.each do |key, value| baggage[item_to_baggage(key)] = value if baggage_item?(key) end SpanContextFactory.build(datadog_context: datadog_context, baggage: baggage) end
inject(span_context, carrier)
click to toggle source
Inject a SpanContext
into the given carrier
@param span_context [SpanContext] @param carrier [Carrier] A carrier object of Rack type
# File lib/ddtrace/opentracer/text_map_propagator.rb, line 19 def inject(span_context, carrier) # Inject Datadog trace properties span_context.datadog_context.tap do |datadog_context| carrier[HTTP_HEADER_TRACE_ID] = datadog_context.trace_id carrier[HTTP_HEADER_PARENT_ID] = datadog_context.span_id carrier[HTTP_HEADER_SAMPLING_PRIORITY] = datadog_context.sampling_priority carrier[HTTP_HEADER_ORIGIN] = datadog_context.origin end # Inject baggage span_context.baggage.each do |key, value| carrier[BAGGAGE_PREFIX + key] = value end nil end
Private Class Methods
baggage_item?(item)
click to toggle source
# File lib/ddtrace/opentracer/text_map_propagator.rb, line 66 def baggage_item?(item) item.to_s.start_with?(BAGGAGE_PREFIX) end
item_to_baggage(key)
click to toggle source
# File lib/ddtrace/opentracer/text_map_propagator.rb, line 70 def item_to_baggage(key) key[BAGGAGE_PREFIX.length, key.length] end