class NewRelic::Agent::CrossAppPayload

Attributes

id[R]
referring_guid[R]
referring_path_hash[R]
referring_trip_id[R]
transaction[R]

Public Class Methods

new(id, transaction, transaction_info) click to toggle source
# File lib/new_relic/agent/distributed_tracing/cross_app_payload.rb, line 10
def initialize(id, transaction, transaction_info)
  @id = id
  @transaction = transaction

  transaction_info ||= []
  @referring_guid = transaction_info[0]
  # unused_flag        = transaction_info[1]
  @referring_trip_id = string_or_false_for(transaction_info[2])
  @referring_path_hash = string_or_false_for(transaction_info[3])
end

Public Instance Methods

as_json_array(content_length) click to toggle source
# File lib/new_relic/agent/distributed_tracing/cross_app_payload.rb, line 21
def as_json_array(content_length)
  queue_time_in_seconds = [transaction.queue_time, 0.0].max
  start_time_in_seconds = [transaction.start_time, 0.0].max
  app_time_in_seconds = Process.clock_gettime(Process::CLOCK_REALTIME) - start_time_in_seconds

  [
    NewRelic::Agent.config[:cross_process_id],
    transaction.best_name,
    queue_time_in_seconds,
    app_time_in_seconds,
    content_length,
    transaction.guid,
    false
  ]
end

Private Instance Methods

string_or_false_for(value) click to toggle source
# File lib/new_relic/agent/distributed_tracing/cross_app_payload.rb, line 39
def string_or_false_for(value)
  value.is_a?(String) && value
end