class NewRelic::Agent::DistributedTracing::TraceContext::HeaderData
Attributes
trace_parent[RW]
trace_state_payload[RW]
trace_state_vendors[RW]
Public Class Methods
create(trace_parent: nil, trace_state_payload: nil, trace_state_entries: nil, trace_state_size: 0, trace_state_vendors: nil)
click to toggle source
# File lib/new_relic/agent/distributed_tracing/trace_context.rb, line 179 def create(trace_parent: nil, trace_state_payload: nil, trace_state_entries: nil, trace_state_size: 0, trace_state_vendors: nil) new(trace_parent, \ trace_state_payload, \ trace_state_entries, \ trace_state_size, \ trace_state_vendors) end
new(trace_parent, trace_state_payload, trace_state_entries, trace_state_size, trace_state_vendors)
click to toggle source
# File lib/new_relic/agent/distributed_tracing/trace_context.rb, line 192 def initialize(trace_parent, trace_state_payload, trace_state_entries, trace_state_size, trace_state_vendors) @trace_parent = trace_parent @trace_state = nil @trace_state_entries = trace_state_entries @trace_state_payload = trace_state_payload @trace_state_size = trace_state_size @trace_state_vendors = trace_state_vendors end
Public Instance Methods
parent_id()
click to toggle source
# File lib/new_relic/agent/distributed_tracing/trace_context.rb, line 214 def parent_id @trace_parent[PARENT_ID_KEY] end
trace_id()
click to toggle source
# File lib/new_relic/agent/distributed_tracing/trace_context.rb, line 210 def trace_id @trace_parent[TRACE_ID_KEY] end
trace_state(trace_state_entry)
click to toggle source
# File lib/new_relic/agent/distributed_tracing/trace_context.rb, line 203 def trace_state(trace_state_entry) @trace_state ||= join_trace_state(trace_state_entry.size) @trace_state_entries = nil trace_state_entry = "#{trace_state_entry}#{@trace_state}" end
Private Instance Methods
join_trace_state(trace_state_entry_size)
click to toggle source
# File lib/new_relic/agent/distributed_tracing/trace_context.rb, line 220 def join_trace_state(trace_state_entry_size) return @trace_state || NewRelic::EMPTY_STR if @trace_state_entries.nil? || @trace_state_entries.empty? max_size = MAX_TRACE_STATE_SIZE - trace_state_entry_size return @trace_state_entries.join(COMMA).prepend(COMMA) if @trace_state_size < max_size joined_trace_state = +'' used_size = 0 @trace_state_entries.each do |entry| entry_size = entry.size + 1 break if used_size + entry_size > max_size next if entry_size > MAX_TRACE_STATE_ENTRY_SIZE joined_trace_state << COMMA << entry used_size += entry_size end joined_trace_state end