Class: Seams::Events::Adapter

Inherits:
Object
  • Object
show all
Defined in:
lib/seams/events/adapter.rb

Overview

Abstract base class for event-bus adapters. Real adapters wrap a transport (ActiveSupport::Notifications, an external queue, etc.) and implement the three primitives below.

Direct Known Subclasses

Seams::Events::Adapters::ActiveSupport

Instance Method Summary collapse

Instance Method Details

#publish(_event_name, _payload) ⇒ void

This method returns an undefined value.

Deliver an event (a name plus a Hash payload) to the transport.

Raises:

  • (NotImplementedError) —

    unless a subclass overrides it.



14
15
16
# File 'lib/seams/events/adapter.rb', line 14

def publish(_event_name, _payload)
  raise NotImplementedError, "#{self.class} must implement #publish"
end

#subscribe(_event_name) ⇒ Object

Register a block to run when the named event is published.

Returns:

  • (Object) —

    a transport-specific subscriber handle.

Raises:

  • (NotImplementedError) —

    unless a subclass overrides it.



21
22
23
# File 'lib/seams/events/adapter.rb', line 21

def subscribe(_event_name, &)
  raise NotImplementedError, "#{self.class} must implement #subscribe"
end

#unsubscribe(_subscriber) ⇒ void

This method returns an undefined value.

Detach a previously-registered subscriber (the handle #subscribe returned).

Raises:

  • (NotImplementedError) —

    unless a subclass overrides it.



28
29
30
# File 'lib/seams/events/adapter.rb', line 28

def unsubscribe(_subscriber)
  raise NotImplementedError, "#{self.class} must implement #unsubscribe"
end