class GraphiteApiMiddleware::Server

Attributes

client[R]
client_id[R]

Public Class Methods

default_options() click to toggle source
# File lib/graphite-api-middleware.rb, line 57
def self.default_options
  GraphiteAPI::Client.default_options.
    tap {|opts| opts.delete :backends}.
    merge interval: 60, pid: '/var/run/graphite-api-middleware.pid'
end
new(client, logger) click to toggle source
# File lib/graphite-api-middleware.rb, line 28
def initialize client, logger
  @client = client
  @logger = logger
end
start(options, logger) click to toggle source
# File lib/graphite-api-middleware.rb, line 63
def self.start options, logger
  EventMachine.run do
    GraphiteAPI::Logger.logger = logger
    logger.info "Server running on port #{options[:port]}"

    client = GraphiteAPI::Client.new options

    # Starting server
    [:start_server, :open_datagram_socket].each do |method_name|
      EventMachine.send(method_name, '0.0.0.0', options[:port], self, client, logger)
    end
  end
end
stop() click to toggle source
# File lib/graphite-api-middleware.rb, line 77
def self.stop
  EventMachine.stop
end

Public Instance Methods

post_init() click to toggle source
# File lib/graphite-api-middleware.rb, line 35
def post_init
  @client_id = peername
  @logger.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
  @logger.debug [:middleware, :message, client_id, data]
  client.stream data, client_id
end
unbind() click to toggle source
# File lib/graphite-api-middleware.rb, line 45
def unbind
  @logger.debug [:middleware, :disconnecting, client_id]
  client.cancel
end

Private Instance Methods

peername() click to toggle source
# File lib/graphite-api-middleware.rb, line 50
def peername
  port, *ip = get_peername[2,6].unpack "nC4"
  [ip.join("."),port].join ":"
end