Class: OpenTelemetry::Propagator::B3::Multi::TextMapExtractor
- Inherits:
-
Object
- Object
- OpenTelemetry::Propagator::B3::Multi::TextMapExtractor
- Defined in:
- lib/opentelemetry/propagator/b3/multi/text_map_extractor.rb
Overview
Extracts context from carriers in the b3 single header format
Instance Method Summary collapse
-
#extract(carrier, context, getter = nil) ⇒ Context
Extract b3 context from the supplied carrier and set the active span in the given context.
-
#initialize(default_getter = Context::Propagation.text_map_getter) ⇒ TextMapExtractor
constructor
Returns a new TextMapExtractor that extracts b3 context using the specified getter.
Constructor Details
#initialize(default_getter = Context::Propagation.text_map_getter) ⇒ TextMapExtractor
Returns a new TextMapExtractor that extracts b3 context using the specified getter
35 36 37 |
# File 'lib/opentelemetry/propagator/b3/multi/text_map_extractor.rb', line 35 def initialize(default_getter = Context::Propagation.text_map_getter) @default_getter = default_getter end |
Instance Method Details
#extract(carrier, context, getter = nil) ⇒ Context
Extract b3 context from the supplied carrier and set the active span in the given context. The original context will be returned if b3 cannot be extracted from the carrier.
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/opentelemetry/propagator/b3/multi/text_map_extractor.rb', line 50 def extract(carrier, context, getter = nil) getter ||= @default_getter trace_id_hex = getter.get(carrier, B3_TRACE_ID_KEY) return context unless valid_trace_id?(trace_id_hex) span_id_hex = getter.get(carrier, B3_SPAN_ID_KEY) return context unless valid_span_id?(span_id_hex) sampled = getter.get(carrier, B3_SAMPLED_KEY) flags = getter.get(carrier, B3_FLAGS_KEY) context = B3.context_with_debug(context) if flags == DEBUG_FLAG span_context = Trace::SpanContext.new( trace_id: B3.to_trace_id(trace_id_hex), span_id: B3.to_span_id(span_id_hex), trace_flags: to_trace_flags(sampled, flags), remote: true ) span = Trace::Span.new(span_context: span_context) Trace.context_with_span(span, parent_context: context) rescue OpenTelemetry::Error context end |