class OpenTelemetry::Context::Propagation::TextMapPropagator
A text map propagator that composes an extractor and injector into a single interface exposing inject and extract methods.
Public Class Methods
Returns a Propagator that delegates inject and extract to the provided injector and extractor
@param [#inject] injector @param [#extract] extractor
# File lib/opentelemetry/context/propagation/text_map_propagator.rb, line 18 def initialize(injector, extractor) raise ArgumentError, 'injector and extractor must both be non-nil' if injector.nil? || extractor.nil? @injector = injector @extractor = extractor end
Public Instance Methods
Extracts and returns context from a carrier. Returns the provided context and logs a warning if an error if extraction fails.
@param [Object] carrier The carrier to extract context from. @param [optional Context] context Context
to be updated with the state
extracted from the carrier. Defaults to +Context.current+.
@param [optional Getter] getter If the optional getter is provided, it
will be used to read the header from the carrier, otherwise the default getter will be used.
@return [Context] a new context updated with state extracted from the
carrier
# File lib/opentelemetry/context/propagation/text_map_propagator.rb, line 54 def extract(carrier, context: Context.current, getter: Context::Propagation.text_map_getter) @extractor.extract(carrier, context, getter) rescue StandardError => e OpenTelemetry.logger.warn "Error in Propagator#extract #{e.message}" context end
Returns the predefined propagation fields. If your carrier is reused, you should delete the fields returned by this method before calling inject
.
@return [Array<String>] a list of fields that will be used by this propagator.
# File lib/opentelemetry/context/propagation/text_map_propagator.rb, line 65 def fields @injector.fields end
Injects the provided context into a carrier using the underlying injector. Logs a warning if injection fails.
@param [Object] carrier A mutable carrier to inject context into. @param [optional Context] context Context
to be injected into carrier. Defaults
to +Context.current+.
@param [optional Setter] setter If the optional setter is provided, it
will be used to write context into the carrier, otherwise the default setter will be used.
# File lib/opentelemetry/context/propagation/text_map_propagator.rb, line 34 def inject(carrier, context: Context.current, setter: Context::Propagation.text_map_setter) @injector.inject(carrier, context, setter) nil rescue StandardError => e OpenTelemetry.logger.warn "Error in Propagator#inject #{e.message}" nil end