Class: ROM::Notifications::EventBus

Inherits:
Object
  • Object
show all
Includes:
Publisher
Defined in:
core/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



225
226
227
228
229
# File 'core/lib/rom/support/notifications.rb', line 225

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

Instance Attribute Details

#eventsObject (readonly)



212
213
214
# File 'core/lib/rom/support/notifications.rb', line 212

def events
  @events
end

#idObject (readonly)



208
209
210
# File 'core/lib/rom/support/notifications.rb', line 208

def id
  @id
end

#listenersObject (readonly)



216
217
218
# File 'core/lib/rom/support/notifications.rb', line 216

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