class Jaeger::Extractors::TraceContextRackCodec
Constants
- HEADER_V0_PATTERN
Internal regex used to parse fields in version 0
- VERSION_PATTERN
Internal regex used to identify the TraceContext version
Public Class Methods
extract(carrier)
click to toggle source
# File lib/jaeger/extractors.rb, line 137 def self.extract(carrier) header_value = carrier['HTTP_TRACEPARENT'] version_match = VERSION_PATTERN.match(header_value) return nil unless version_match # We currently only support version 0 return nil if version_match[1].to_i(16) != 0 match = HEADER_V0_PATTERN.match(version_match[2]) return nil unless match trace_id = TraceId.base16_hex_id_to_uint128(match[1]) span_id = TraceId.base16_hex_id_to_uint64(match[2]) flags = TraceId.base16_hex_id_to_uint64(match[4]) return nil if trace_id.zero? || span_id.zero? SpanContext.new(trace_id: trace_id, span_id: span_id, flags: flags) end