class Jaeger::Extractors::B3CodecCommon
Public Class Methods
extract(carrier, keys)
click to toggle source
# File lib/jaeger/extractors.rb, line 96 def self.extract(carrier, keys) return nil if carrier[keys::TRACE_ID].nil? || carrier[keys::SPAN_ID].nil? trace_id = if carrier[keys::TRACE_ID].length <= 16 TraceId.base16_hex_id_to_uint64(carrier[keys::TRACE_ID]) else TraceId.base16_hex_id_to_uint128(carrier[keys::TRACE_ID]) end span_id = TraceId.base16_hex_id_to_uint64(carrier[keys::SPAN_ID]) parent_id = TraceId.base16_hex_id_to_uint64(carrier[keys::PARENT_SPAN_ID]) flags = parse_flags(carrier[keys::FLAGS], carrier[keys::SAMPLED]) return nil if span_id.zero? || trace_id.zero? SpanContext.new( trace_id: trace_id, parent_id: parent_id, span_id: span_id, flags: flags ) end
Private Class Methods
parse_flags(flags_header, sampled_header)
click to toggle source
if the flags header is '1' then the sampled header should not be present
# File lib/jaeger/extractors.rb, line 120 def self.parse_flags(flags_header, sampled_header) if flags_header == '1' Jaeger::SpanContext::Flags::DEBUG else TraceId.base16_hex_id_to_uint64(sampled_header) end end