class Datadog::Event
A simple pub-sub event model for components to exchange messages through.
Attributes
name[R]
subscriptions[R]
Public Class Methods
new(name)
click to toggle source
# File lib/ddtrace/event.rb, line 11 def initialize(name) @name = name @subscriptions = {} @mutex = Mutex.new end
Public Instance Methods
publish(*args)
click to toggle source
# File lib/ddtrace/event.rb, line 39 def publish(*args) @mutex.synchronize do subscriptions.each do |key, block| begin block.call(*args) rescue StandardError => e Datadog.logger.debug("Error while handling '#{key}' for '#{name}' event: #{e.message}") end end true end end
subscribe(key, &block)
click to toggle source
# File lib/ddtrace/event.rb, line 17 def subscribe(key, &block) raise ArgumentError, 'Must give a block to subscribe!' unless block @mutex.synchronize do subscriptions[key] = block end end
unsubscribe(key)
click to toggle source
# File lib/ddtrace/event.rb, line 25 def unsubscribe(key) @mutex.synchronize do subscriptions.delete(key) end end
unsubscribe_all!()
click to toggle source
# File lib/ddtrace/event.rb, line 31 def unsubscribe_all! @mutex.synchronize do subscriptions.clear end true end