Class: ScoutApm::Serializers::PayloadSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/scout_apm/serializers/payload_serializer.rb

Class Method Summary collapse

Class Method Details

.deserialize(data) ⇒ Object



29
30
31
# File 'lib/scout_apm/serializers/payload_serializer.rb', line 29

def self.deserialize(data)
  Marshal.load(data)
end

.serialize(metadata, metrics, slow_transactions, jobs, slow_jobs, histograms, db_query_metrics, traces) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/scout_apm/serializers/payload_serializer.rb', line 5

def self.serialize(, metrics, slow_transactions, jobs, slow_jobs, histograms, db_query_metrics, traces)
  if ScoutApm::Agent.instance.context.config.value("report_format") == 'json'
    ScoutApm::Serializers::PayloadSerializerToJson.serialize(, metrics, slow_transactions, jobs, slow_jobs, histograms, db_query_metrics, traces)
  else
     = .dup
    .default = nil

    metrics = metrics.dup
    metrics.default = nil
    Marshal.dump(: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)
  end
end