Method: NewRelic::Agent::TraceContextPayload.from_s

Defined in:
lib/new_relic/agent/distributed_tracing/trace_context_payload.rb

.from_s(payload_string) ⇒ Object


37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/new_relic/agent/distributed_tracing/trace_context_payload.rb', line 37

def from_s(payload_string)
  attrs = payload_string.split(DELIMITER)

  payload = create( \
    version: int!(attrs[0]),
    parent_type: int!(attrs[1]),
    parent_account_id: attrs[2],
    parent_app_id: attrs[3],
    id: value_or_nil(attrs[4]),
    transaction_id: value_or_nil(attrs[5]),
    sampled: value_or_nil(attrs[6]) ? boolean_int!(attrs[6]) == 1 : nil,
    priority: float!(attrs[7]),
    timestamp: int!(attrs[8])
  )
  handle_invalid_payload(message: 'payload missing attributes') unless payload.valid?
  payload
rescue => e
  handle_invalid_payload(error: e)
  raise
end