module Dry::Events::Publisher::ClassMethods
Class interface for publisher classes
@api public
Public Instance Methods
events()
click to toggle source
Global registry with events
@api private
# File lib/dry/events/publisher.rb, line 169 def events @__events__ ||= Concurrent::Map.new end
listeners()
click to toggle source
Global registry with listeners
@api private
# File lib/dry/events/publisher.rb, line 176 def listeners @__listeners__ ||= LISTENERS_HASH.dup end
new_bus()
click to toggle source
Sets up event bus for publisher instances
@return [Bus]
@api private
# File lib/dry/events/publisher.rb, line 162 def new_bus Bus.new(events: events.dup, listeners: listeners.dup) end
register_event(event_id, payload = EMPTY_HASH)
click to toggle source
Register an event
@param [String] event_id The event identifier @param [Hash] payload Optional default payload
@api public
# File lib/dry/events/publisher.rb, line 139 def register_event(event_id, payload = EMPTY_HASH) events[event_id] = Event.new(event_id, payload) self end
subscribe(event_id, filter_hash = EMPTY_HASH, &block)
click to toggle source
Subscribe to an event
@param [Symbol,String] event_id The event identifier @param [Hash] filter_hash An optional filter for conditional listeners
@return [Class] publisher class
@api public
# File lib/dry/events/publisher.rb, line 152 def subscribe(event_id, filter_hash = EMPTY_HASH, &block) listeners[event_id] << [block, Filter.new(filter_hash)] self end