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