Class: Jaeger::Client::Extractors::B3RackCodec

Inherits:
Object
  • Object
show all
Defined in:
lib/jaeger/client/extractors.rb

Class Method Summary collapse

Class Method Details

.extract(carrier) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/jaeger/client/extractors.rb', line 44

def self.extract(carrier)
  trace_id = TraceId.base16_hex_id_to_uint64(carrier['HTTP_X_B3_TRACEID'])
  span_id = TraceId.base16_hex_id_to_uint64(carrier['HTTP_X_B3_SPANID'])
  parent_id = TraceId.base16_hex_id_to_uint64(carrier['HTTP_X_B3_PARENTSPANID'])
  flags = parse_flags(carrier['HTTP_X_B3_FLAGS'], carrier['HTTP_X_B3_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