Class: OpenTelemetry::Propagator::Jaeger::TextMapInjector

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

Overview

Injects context into carriers

Instance Method Summary collapse

Constructor Details

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

Returns a new TextMapInjector that extracts Jaeger context using the specified header keys

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.



23
24
25
# File 'lib/opentelemetry/propagator/jaeger/text_map_injector.rb', line 23

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



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

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

  flags = to_flags(context, span_context)
  trace_span_identity_value = [
    span_context.hex_trace_id, span_context.hex_span_id, '0', flags
  ].join(':')
  setter ||= @default_setter
  setter.set(carrier, IDENTITY_KEY, trace_span_identity_value)
  OpenTelemetry.baggage.values(context: context).each do |key, value|
    baggage_key = 'uberctx-' + key
    encoded_value = CGI.escape(value)
    setter.set(carrier, baggage_key, encoded_value)
  end
  carrier
end