class ScoutApm::Serializers::PayloadSerializer

Public Class Methods

deserialize(data) click to toggle source
# File lib/scout_apm/serializers/payload_serializer.rb, line 30
def self.deserialize(data)
  Marshal.load(data)
end
serialize(metadata, metrics, slow_transactions, jobs, slow_jobs, histograms, db_query_metrics, external_service_metrics, traces) click to toggle source
# File lib/scout_apm/serializers/payload_serializer.rb, line 5
def self.serialize(metadata, metrics, slow_transactions, jobs, slow_jobs, histograms, db_query_metrics, external_service_metrics, traces)
  if ScoutApm::Agent.instance.context.config.value("report_format") == 'json'
    ScoutApm::Serializers::PayloadSerializerToJson.serialize(metadata, metrics, slow_transactions, jobs, slow_jobs, histograms, db_query_metrics, external_service_metrics, traces)
  else
    metadata = metadata.dup
    metadata.default = nil

    metrics = metrics.dup
    metrics.default = nil
    Marshal.dump(:metadata          => metadata,
                 :metrics           => metrics,
                 :slow_transactions => slow_transactions,
                 :jobs              => jobs,
                 :slow_jobs         => slow_jobs,

                 # as_json returns a ruby object. Since it's not a simple
                 # array, use this to maintain compatibility with json
                 # payloads. At this point, the marshal code branch is
                 # very rarely used anyway.
                 :histograms        => HistogramsSerializerToJson.new(histograms).as_json,
                 :db_query_metrics  => db_query_metrics,
                 :external_service_metrics  => external_service_metrics)
  end
end