Class: OpenTelemetry::Propagator::B3::Multi::TextMapInjector

Inherits:
Object
  • Object
show all
Defined in:
lib/opentelemetry/propagator/b3/multi/text_map_injector.rb

Overview

Injects context into carriers using the b3 single header format

Instance Method Summary collapse

Constructor Details

#initialize(default_setter = Context::Propagation.text_map_setter) ⇒ TextMapInjector

Returns a new TextMapInjector that injects b3 context using the specified setter

Parameters:

  • default_setter (optional Setter) (defaults to: Context::Propagation.text_map_setter)

    The default setter used to write context into a carrier during inject. Defaults to a Context:Propagation::TextMapSetter instance.



22
23
24
# File 'lib/opentelemetry/propagator/b3/multi/text_map_injector.rb', line 22

def initialize(default_setter = Context::Propagation.text_map_setter)
  @default_setter = default_setter
end

Instance Method Details

#inject(carrier, context, setter = nil) ⇒ Object

Set the span context on the supplied carrier.

Parameters:

  • context (Context)

    The active Context.

  • setter (optional Setter) (defaults to: nil)

    If the optional setter is provided, it will be used to write context into the carrier, otherwise the default setter will be used.

Returns:

  • (Object)

    the carrier with context injected



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/opentelemetry/propagator/b3/multi/text_map_injector.rb', line 33

def inject(carrier, context, setter = nil)
  span_context = Trace.current_span(context).context
  return unless span_context.valid?

  setter ||= @default_setter
  setter.set(carrier, B3_TRACE_ID_KEY, span_context.hex_trace_id)
  setter.set(carrier, B3_SPAN_ID_KEY, span_context.hex_span_id)

  if B3.debug?(context)
    setter.set(carrier, B3_FLAGS_KEY, '1')
  elsif span_context.trace_flags.sampled?
    setter.set(carrier, B3_SAMPLED_KEY, '1')
  else
    setter.set(carrier, B3_SAMPLED_KEY, '0')
  end

  carrier
end