class TingYun::Agent::Event::EventListener

Attributes

allocation[RW]

Public Class Methods

new() click to toggle source
# File lib/ting_yun/agent/event/event_listener.rb, line 10
def initialize
  @events = {}
  @allocation = 100
end

Public Instance Methods

check_allocation(event) click to toggle source
# File lib/ting_yun/agent/event/event_listener.rb, line 21
def check_allocation(event)
  if @events[event].size > @allocation
    TingYun::Agent.logger.debug("Run-away event subscription on #{event}? Subscribed #{count}")
  end
end
clear() click to toggle source
# File lib/ting_yun/agent/event/event_listener.rb, line 27
def clear
  @events.clear
end
notify(event, *args) click to toggle source
# File lib/ting_yun/agent/event/event_listener.rb, line 32
def notify(event, *args)
  return unless @events.has_key?(event)

  @events[event].each do |handler|
    begin
      handler.call(*args)
    rescue => err
      TingYun::Agent.logger.debug("Failure during notify for #{event}", err)
    end
  end
end
subscribe(event, &handler) click to toggle source
# File lib/ting_yun/agent/event/event_listener.rb, line 15
def subscribe(event, &handler)
  @events[event] ||= []
  @events[event] << handler
  check_allocation(event)
end