lib/instana/tracing/span_context.rb in instana-1.193.6 vs lib/instana/tracing/span_context.rb in instana-1.195.0

- old
+ new

@@ -16,21 +16,44 @@ # def initialize(tid, sid, level = 1, baggage = {}) @trace_id = tid @span_id = sid @level = level - @baggage = baggage + @baggage = baggage || {} end def trace_id_header ::Instana::Util.id_to_header(@trace_id) end def span_id_header ::Instana::Util.id_to_header(@span_id) end + def trace_parent_header + return '' unless valid? + + trace = (@baggage[:external_trace_id] || @trace_id).rjust(32, '0') + parent = @span_id.rjust(16, '0') + flags = @level == 1 ? "01" : "00" + + "00-#{trace}-#{parent}-#{flags}" + end + + def trace_state_header + return '' unless valid? + + state = ["in=#{@trace_id};#{@span_id}", @baggage[:external_state]] + state.compact.join(',') + end + def to_hash { :trace_id => @trace_id, :span_id => @span_id } + end + + private + + def valid? + @baggage && @trace_id && @span_id end end end