class NewRelic::Agent::EventListener
Basic mechanism for the agent instance to provide agent-wide eventing. It is intended to keep different pieces of the app decoupled from each other.
While an EventListener
could be used elsewhere, it’s strongly expected your eventing needs should be met by the agent’s instance.
Attributes
Public Class Methods
Source
# File lib/new_relic/agent/event_listener.rb, line 14 def initialize @events = {} @runaway_threshold = 100 end
Public Instance Methods
Source
# File lib/new_relic/agent/event_listener.rb, line 25 def check_for_runaway_subscriptions(event) count = @events[event].size NewRelic::Agent.logger.debug("Run-away event subscription on #{event}? Subscribed #{count}") if count > @runaway_threshold end
Source
# File lib/new_relic/agent/event_listener.rb, line 34 def notify(event, *args) return unless @events.has_key?(event) @events[event].each do |handler| begin handler.call(*args) rescue => err NewRelic::Agent.logger.debug("Failure during notify for #{event}", err) end end end
Source
# File lib/new_relic/agent/event_listener.rb, line 19 def subscribe(event, &handler) @events[event] ||= [] @events[event] << handler check_for_runaway_subscriptions(event) end