Class: Statsd::MessageDispatchDaemon

Inherits:
EventMachine::Connection
  • Object
show all
Defined in:
lib/statsd/daemon.rb

Constant Summary collapse

@@receivers =

Methods to be called when a statsd message comes in.

[]

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.receiversObject



28
29
30
# File 'lib/statsd/daemon.rb', line 28

def self.receivers
  @@receivers
end

.receivers=(list) ⇒ Object

Raises:

  • (ArgumentError)


24
25
26
27
# File 'lib/statsd/daemon.rb', line 24

def self.receivers=(list)
  raise ArgumentError unless list.is_a?(Array)
  @@receivers = list
end

.register_receiver(mod) ⇒ Object

Register a Module implementing an EventMachine::Connection -like interface.

receive_data methods on all registered modules will get called, but for any other EM::Connection methods, the last registered module/method will take precedence.



15
16
17
18
19
20
21
22
23
# File 'lib/statsd/daemon.rb', line 15

def self.register_receiver(mod)
  begin
    method = mod.method('receive_data')
    @@receivers << method unless @@receivers.include?(method)
  rescue NameError
    raise ArgumentError.new("The passed module #{mod} doesn't implement a receive_data method.")
  end
  include mod
end

Instance Method Details

#receive_data(msg) ⇒ Object



31
32
33
34
35
# File 'lib/statsd/daemon.rb', line 31

def receive_data(msg)
  @@receivers.each do |method|
    method.call(msg)
  end
end