class OneApm::Support::JsonMarshaller
Constants
- OA_OK_YAJL_VERSION
Public Class Methods
human_readable?()
click to toggle source
# File lib/one_apm/support/json_marshaller.rb, line 63 def self.human_readable? true # for some definitions of 'human' end
is_supported?()
click to toggle source
# File lib/one_apm/support/json_marshaller.rb, line 55 def self.is_supported? OneApm::JSONWrapper.usable_for_collector_serialization? end
new()
click to toggle source
# File lib/one_apm/support/json_marshaller.rb, line 11 def initialize OneApm::Manager.logger.info "Using JSON marshaller (#{OneApm::JSONWrapper.backend_name})" warn_for_yajl end
Public Instance Methods
default_encoder()
click to toggle source
# File lib/one_apm/support/json_marshaller.rb, line 51 def default_encoder Encoders::Base64CompressedJSON end
dump(ruby, opts={})
click to toggle source
# File lib/one_apm/support/json_marshaller.rb, line 27 def dump(ruby, opts={}) prepared = prepare(ruby, opts) if opts[:skip_normalization] normalize_encodings = false else normalize_encodings = OneApm::Manager.config[:normalize_json_string_encodings] end OneApm::JSONWrapper.dump prepared, :normalize => normalize_encodings end
format()
click to toggle source
# File lib/one_apm/support/json_marshaller.rb, line 59 def format 'json' end
load(data)
click to toggle source
# File lib/one_apm/support/json_marshaller.rb, line 39 def load(data) if data.nil? || data.empty? OneApm::Manager.logger.error "Empty JSON response from collector: '#{data.inspect}'" return nil end return_value OneApm::JSONWrapper.load(data) rescue => e OneApm::Manager.logger.debug "#{e.class.name} : #{e.message} encountered loading collector response: #{data}" raise end
warn_for_yajl()
click to toggle source
# File lib/one_apm/support/json_marshaller.rb, line 16 def warn_for_yajl if defined?(::Yajl) require 'yajl/version' if OneApm::VersionNumber.new(::Yajl::VERSION) < OA_OK_YAJL_VERSION OneApm::Manager.logger.warn "Detected yajl-ruby version #{::Yajl::VERSION} which can cause segfaults with oneapm_rpm's thread profiling features. We strongly recommend you upgrade to the latest yajl-ruby version available." end end rescue => err OneApm::Manager.logger.warn "Failed trying to watch for problematic yajl-ruby version.", err end