Class: MonitoringProtocols::JSON::Parser

Inherits:
Parser
  • Object
show all
Defined in:
lib/monitoring_protocols/json/parser.rb

Overview

{

type: 'datapoints',
app_name: 'system',

linux1: =>
  cpu: {
    'user'  => 43,
    'sys'   => 3.4,
    'nice'  => 6.0
  },

  memory: {
    'total'  => 2048,
    'used'   => 400
  }
}

}

Direct Known Subclasses

MsgPack::Parser

Class Method Summary collapse

Methods inherited from Parser

#parse

Class Method Details

._parse(buffer) ⇒ Object



43
44
45
# File 'lib/monitoring_protocols/json/parser.rb', line 43

def self._parse(buffer)
  Oj.load(buffer, symbol_keys: false)
end

.parse(buffer) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/monitoring_protocols/json/parser.rb', line 47

def self.parse(buffer)
  packets = []
  
  data = _parse(buffer)
  
  msg_type = data.delete('type')
  
  if msg_type == 'datapoints'
    parse_datapoints(data) do |pkt|
      packets << pkt
    end
  end
  
  packets
  
rescue Oj::ParseError, MonitoringProtocols::ParseError
  puts "Unable to parse: #{buffer}"
  []
end