module Honeycomb::W3CPropagation::UnmarshalTraceContext
Parse trace headers
Constants
- INVALID_SPAN_ID
- INVALID_TRACE_ID
Public Class Methods
parse(serialized_trace)
click to toggle source
# File lib/honeycomb/propagation/w3c.rb, line 15 def parse(serialized_trace) unless serialized_trace.nil? version, payload = serialized_trace.split("-", 2) # version should be 2 hex characters if version =~ /^[A-Fa-f0-9]{2}$/ trace_id, parent_span_id = parse_v1(payload) if !trace_id.nil? && !parent_span_id.nil? # return nil for dataset return [trace_id, parent_span_id, nil, nil] end end end [nil, nil, nil, nil] end
parse_rack_env(env)
click to toggle source
# File lib/honeycomb/propagation/w3c.rb, line 11 def parse_rack_env(env) parse env["HTTP_TRACEPARENT"] end
parse_v1(payload)
click to toggle source
# File lib/honeycomb/propagation/w3c.rb, line 31 def parse_v1(payload) trace_id, parent_span_id, trace_flags = payload.split("-", 3) if trace_flags.nil? # if trace_flags is nil, it means a field is missing return [nil, nil] end if trace_id == INVALID_TRACE_ID || parent_span_id == INVALID_SPAN_ID return [nil, nil] end [trace_id, parent_span_id] end
Public Instance Methods
parse(serialized_trace)
click to toggle source
# File lib/honeycomb/propagation/w3c.rb, line 15 def parse(serialized_trace) unless serialized_trace.nil? version, payload = serialized_trace.split("-", 2) # version should be 2 hex characters if version =~ /^[A-Fa-f0-9]{2}$/ trace_id, parent_span_id = parse_v1(payload) if !trace_id.nil? && !parent_span_id.nil? # return nil for dataset return [trace_id, parent_span_id, nil, nil] end end end [nil, nil, nil, nil] end
Private Instance Methods
parse_rack_env(env)
click to toggle source
# File lib/honeycomb/propagation/w3c.rb, line 11 def parse_rack_env(env) parse env["HTTP_TRACEPARENT"] end
parse_v1(payload)
click to toggle source
# File lib/honeycomb/propagation/w3c.rb, line 31 def parse_v1(payload) trace_id, parent_span_id, trace_flags = payload.split("-", 3) if trace_flags.nil? # if trace_flags is nil, it means a field is missing return [nil, nil] end if trace_id == INVALID_TRACE_ID || parent_span_id == INVALID_SPAN_ID return [nil, nil] end [trace_id, parent_span_id] end