class SignalFx::Lambda::Tracing::B3CodecCommon
Public Class Methods
extract(carrier, keys)
click to toggle source
# File lib/signalfx/lambda/tracing/extractors.rb, line 36 def self.extract(carrier, keys) trace_id = TraceId.base16_hex_id_to_uint64(carrier[keys::TRACE_ID]) 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.nil? || trace_id.nil? 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/signalfx/lambda/tracing/extractors.rb, line 54 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