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