Sha256: 487f85817e0ba5bbfcd0d96e437a444b526dcb290bd5d49cd75d4156c5f5eed2

Contents?: true

Size: 1.59 KB

Versions: 2

Compression:

Stored size: 1.59 KB

Contents

# encoding: utf-8
# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.

require 'new_relic/agent/new_relic_service/marshaller'

module NewRelic
  module Agent
    class NewRelicService
      # Marshal collector protocol with JSON when available
      class JsonMarshaller < Marshaller
        def initialize
          ::NewRelic::Agent.logger.debug "Using JSON marshaller (#{NewRelic::JSONWrapper.backend_name})"
          unless self.class.is_supported?
            ::NewRelic::Agent.logger.warn "The JSON marshaller in use (#{NewRelic::JSONWrapper.backend_name}) is not recommended. Ensure the 'json' gem is available in your application for better performance."
          end
        end

        def dump(ruby, opts={})
          prepared = prepare(ruby, opts)
          NewRelic::JSONWrapper.dump(prepared,
            :normalize => Agent.config[:normalize_json_string_encodings])
        end

        def load(data)
          return_value(NewRelic::JSONWrapper.load(data)) if data && data != ''
        rescue => e
          ::NewRelic::Agent.logger.debug "#{e.class.name} : #{e.message} encountered loading collector response: #{data}"
          raise
        end

        def default_encoder
          Encoders::Base64CompressedJSON
        end

        def format
          'json'
        end

        def self.is_supported?
          NewRelic::JSONWrapper.usable_for_collector_serialization?
        end

        def self.human_readable?
          true # for some definitions of 'human'
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
newrelic_rpm-3.9.3.241 lib/new_relic/agent/new_relic_service/json_marshaller.rb
newrelic_rpm-3.9.2.239 lib/new_relic/agent/new_relic_service/json_marshaller.rb