Sha256: 20c9c6abaab8a9fc0495f8b249c7bef84b30b5aded8331c8ebbe1e2612683537
Contents?: true
Size: 1.34 KB
Versions: 2
Compression:
Stored size: 1.34 KB
Contents
# encoding: utf-8 # This file is distributed under New Relic's license terms. # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details. # frozen_string_literal: true module NewRelic::Agent # 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. class EventListener attr_accessor :runaway_threshold def initialize @events = {} @runaway_threshold = 100 end def subscribe(event, &handler) @events[event] ||= [] @events[event] << handler check_for_runaway_subscriptions(event) end 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 def clear @events.clear end 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 end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
newrelic_rpm-8.10.1 | lib/new_relic/agent/event_listener.rb |
newrelic_rpm-8.10.0 | lib/new_relic/agent/event_listener.rb |