Class: ROM::Notifications::EventBus

Inherits:
Object
  • Object
show all
Includes:
Publisher
Defined in:
lib/rom/support/notifications.rb

Overview

Event bus

An event bus stores listeners (callbacks) and events

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id, events: EMPTY_HASH, listeners: LISTENERS_HASH.dup) ⇒ EventBus

Initialize a new event bus

Parameters:

  • id (Symbol)

    The bus identifier

  • events (Hash) (defaults to: EMPTY_HASH)

    A hash with events

  • listeners (Hash) (defaults to: LISTENERS_HASH.dup)

    A hash with listeners


227
228
229
230
231
# File 'lib/rom/support/notifications.rb', line 227

def initialize(id, events: EMPTY_HASH, listeners: LISTENERS_HASH.dup)
  @id = id
  @listeners = listeners
  @events = events
end

Instance Attribute Details

#eventsObject (readonly)


214
215
216
# File 'lib/rom/support/notifications.rb', line 214

def events
  @events
end

#idObject (readonly)


210
211
212
# File 'lib/rom/support/notifications.rb', line 210

def id
  @id
end

#listenersObject (readonly)


218
219
220
# File 'lib/rom/support/notifications.rb', line 218

def listeners
  @listeners
end

Instance Method Details

#subscribe(event_id, query = EMPTY_HASH) {|block| ... } ⇒ Object Originally defined in module Publisher

Subscribe to events. If the query parameter is provided, filters events by payload.

Parameters:

  • event_id (String)

    The event key

  • query (Hash) (defaults to: EMPTY_HASH)

    An optional event filter

Yields:

  • (block)

    The callback

Returns:

  • (Object)

    self

#trigger(event_id, payload = EMPTY_HASH) ⇒ Object Originally defined in module Publisher

Trigger an event

Parameters:

  • event_id (String)

    The event key

  • payload (Hash) (defaults to: EMPTY_HASH)

    An optional payload