Class: GraphiteApiMiddleware::Server

Inherits:
EventMachine::Connection
  • Object
show all
Defined in:
lib/graphite-api-middleware.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client, logger) ⇒ Server

Returns a new instance of Server.



28
29
30
31
# File 'lib/graphite-api-middleware.rb', line 28

def initialize client, logger
  @client = client
  @logger = logger
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



33
34
35
# File 'lib/graphite-api-middleware.rb', line 33

def client
  @client
end

#client_idObject (readonly)

Returns the value of attribute client_id.



33
34
35
# File 'lib/graphite-api-middleware.rb', line 33

def client_id
  @client_id
end

Class Method Details

.default_optionsObject



57
58
59
# File 'lib/graphite-api-middleware.rb', line 57

def self.default_options
  GraphiteAPI::Client.default_options.merge interval: 60, pid: '/var/run/graphite-api-middleware.pid'
end

.start(options, logger) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/graphite-api-middleware.rb', line 61

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

.stopObject



75
76
77
# File 'lib/graphite-api-middleware.rb', line 75

def self.stop
  EventMachine.stop
end

Instance Method Details

#post_initObject



35
36
37
38
# File 'lib/graphite-api-middleware.rb', line 35

def post_init
  @client_id = peername
  @logger.debug [:middleware, :connecting, client_id]
end

#receive_data(data) ⇒ Object



40
41
42
43
# 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

#unbindObject



45
46
47
48
# File 'lib/graphite-api-middleware.rb', line 45

def unbind
  @logger.debug [:middleware, :disconnecting, client_id]
  client.cancel
end