class OneApm::Support::EventListener

Attributes

runaway_threshold[RW]

Public Class Methods

new() click to toggle source
# File lib/one_apm/support/event/event_listener.rb, line 8
def initialize
  @events = {}
  @runaway_threshold = 100
end

Public Instance Methods

check_for_runaway_subscriptions(event) click to toggle source
# File lib/one_apm/support/event/event_listener.rb, line 19
def check_for_runaway_subscriptions(event)
  count = @events[event].size
  OneApm::Manager.logger.debug("Run-away event subscription on #{event}? Subscribed #{count}") if count > @runaway_threshold
end
clear() click to toggle source
# File lib/one_apm/support/event/event_listener.rb, line 24
def clear
  @events.clear
end
notify(event, *args) click to toggle source
# File lib/one_apm/support/event/event_listener.rb, line 28
def notify(event, *args)
  return unless @events.has_key?(event)

  @events[event].each do |handler|
    begin
      handler.call(*args)
    rescue => err
      OneApm::Manager.logger.debug("Failure during notify for #{event}", err)
    end
  end
end
subscribe(event, &handler) click to toggle source
# File lib/one_apm/support/event/event_listener.rb, line 13
def subscribe(event, &handler)
  @events[event] ||= []
  @events[event] << handler
  check_for_runaway_subscriptions(event)
end