class StatsdServer::Input::ZeroMQ
Attributes
logger[RW]
stats[RW]
Public Class Methods
new()
click to toggle source
# File lib/statsdserver/input/zeromq.rb, line 11 def initialize begin require "em-zeromq" rescue LoadError => e raise unless e.message =~ /em-zeromq/ new_e = \ e.exception("Please install the em-zeromq gem for ZeroMQ input.") new_e.set_backtrace(e.backtrace) raise new_e end @logger = Logger.new(STDOUT) end
Public Instance Methods
on_readable(socket, parts)
click to toggle source
# File lib/statsdserver/input/zeromq.rb, line 26 def on_readable(socket, parts) parts.each do |part| str = part.copy_out_string receive_data(str) end end
receive_data(packet)
click to toggle source
# File lib/statsdserver/input/zeromq.rb, line 34 def receive_data(packet) raise "@stats must be set" unless @stats sep = packet.index(";") if sep.nil? @logger.warn("received unversioned update: #{packet}") return end proto_ver = packet[0 .. sep - 1] payload = packet[sep + 1 .. -1] case proto_ver when "1" begin StatsdServer::Proto::V1.parse(payload, @stats) rescue StatsdServer::Proto::ParseError => e @logger.warn(e.message) end else @logger.warn("unknown protocol version #{proto_ver} in update #{packet}") return end end