module Dry::Events::Publisher::InstanceMethods

def __bus__

Other tags:
    Api: - private

Returns:
  • (Bus) -
def __bus__
  @__bus__ ||= self.class.new_bus
end

def process(event_id, payload = EMPTY_HASH, &)

Other tags:
    Api: - public

Parameters:
  • event_id (Symbol, String) -- The event identifier
def process(event_id, payload = EMPTY_HASH, &)
  __bus__.process(event_id, payload, &)
end

def publish(event_id, payload = EMPTY_HASH)

Other tags:
    Api: - public

Parameters:
  • payload (Hash) -- An optional payload
  • event_id (String) -- The event identifier
def publish(event_id, payload = EMPTY_HASH)
  if __bus__.can_handle?(event_id)
    __bus__.publish(event_id, payload)
    self
  else
    raise UnregisteredEventError, event_id
  end
end

def register_event(event_id, payload = EMPTY_HASH)

Other tags:
    Api: - public

Returns:
  • (self) -

Parameters:
  • payload (Hash) -- Optional default payload
  • event_id (Symbol, String) -- The event identifier
def register_event(event_id, payload = EMPTY_HASH)
  __bus__.events[event_id] = Event.new(event_id, payload)
  self
end

def subscribe(object_or_event_id, filter_hash = EMPTY_HASH, &block)

Other tags:
    Api: - public

Returns:
  • (Object) - self

Parameters:
  • filter_hash (Hash) -- An optional event filter
  • object_or_event_id (Symbol, String, Object) -- The event identifier or a listener object
def subscribe(object_or_event_id, filter_hash = EMPTY_HASH, &block)
  if __bus__.can_handle?(object_or_event_id)
    filter = Filter.new(filter_hash)
    if block
      __bus__.subscribe(object_or_event_id, filter, &block)
    else
      __bus__.attach(object_or_event_id, filter)
    end
    self
  else
    raise InvalidSubscriberError, object_or_event_id
  end
end

def subscribed?(listener)

Other tags:
    Api: - public
def subscribed?(listener)
  __bus__.subscribed?(listener)
end

def unsubscribe(listener)

Other tags:
    Api: - public

Returns:
  • (self) -

Parameters:
  • listener (Object) -- The listener object
def unsubscribe(listener)
  __bus__.detach(listener)
end