class GraphiteAPI::Middleware
Public Class Methods
new(buffer)
click to toggle source
Calls superclass method
# File lib/graphite-api/middleware.rb, line 29 def initialize buffer @buffer = buffer and super end
start(options)
click to toggle source
# File lib/graphite-api/middleware.rb, line 56 def self.start options EventMachine.run do GraphiteAPI::Logger.info "Server running on port #{options[:port]}" buffer = GraphiteAPI::Buffer.new options group = GraphiteAPI::Connector::Group.new options # Starting server [:start_server, :open_datagram_socket].each do |m| EventMachine.send(m,'0.0.0.0',options[:port],self,buffer) end # Send metrics to graphite every X seconds Zscheduler.every(options[:interval], :on_shutdown => true) do group.publish buffer.pull :string if buffer.new_records? end end end
Public Instance Methods
post_init()
click to toggle source
# File lib/graphite-api/middleware.rb, line 35 def post_init @client_id = peername debug [:middleware, :connecting, client_id] end
receive_data(data)
click to toggle source
# File lib/graphite-api/middleware.rb, line 40 def receive_data data debug [:middleware, :message, client_id, data] buffer.stream data, client_id end
unbind()
click to toggle source
# File lib/graphite-api/middleware.rb, line 45 def unbind debug [:middleware, :disconnecting, client_id] end
Private Instance Methods
peername()
click to toggle source
# File lib/graphite-api/middleware.rb, line 49 def peername port, *ip = get_peername[2,6].unpack "nC4" [ip.join("."),port].join ":" end