class Jaeger::Extractors::SerializedJaegerTrace

Public Class Methods

parse(trace) click to toggle source
# File lib/jaeger/extractors.rb, line 6
def self.parse(trace)
  return nil if !trace || trace == ''

  trace_arguments = trace.split(':')
  return nil if trace_arguments.size != 4

  trace_id = TraceId.base16_hex_id_to_uint128(trace_arguments[0])
  span_id, parent_id, flags = trace_arguments[1..3].map(&TraceId.method(:base16_hex_id_to_uint64))

  return nil if trace_id.zero? || span_id.zero?

  SpanContext.new(
    trace_id: trace_id,
    parent_id: parent_id,
    span_id: span_id,
    flags: flags
  )
end