Class: Koine::EventManager::EventManager
- Inherits:
-
Object
- Object
- Koine::EventManager::EventManager
- Defined in:
- lib/koine/event_manager/event_manager.rb
Instance Method Summary collapse
- #attach_listener(listener) ⇒ Object
- #detach_listener(listener) ⇒ Object
-
#initialize(on_error: nil) ⇒ EventManager
constructor
A new instance of EventManager.
- #listen_to(event, &block) ⇒ Object
- #listeners ⇒ Object
- #publish(event) ⇒ Object
- #subscribe(subscriber, to:) ⇒ Object
- #trigger(event) ⇒ Object
- #unsubscribe(subscriber, from:) ⇒ Object
Constructor Details
#initialize(on_error: nil) ⇒ EventManager
Returns a new instance of EventManager.
6 7 8 9 |
# File 'lib/koine/event_manager/event_manager.rb', line 6 def initialize(on_error: nil) @on_error = on_error @internal_listener = EventListener.new(on_error: on_error) end |
Instance Method Details
#attach_listener(listener) ⇒ Object
27 28 29 |
# File 'lib/koine/event_manager/event_manager.rb', line 27 def attach_listener(listener) listeners << listener end |
#detach_listener(listener) ⇒ Object
31 32 33 |
# File 'lib/koine/event_manager/event_manager.rb', line 31 def detach_listener(listener) listeners.delete(listener) end |
#listen_to(event, &block) ⇒ Object
15 16 17 |
# File 'lib/koine/event_manager/event_manager.rb', line 15 def listen_to(event, &block) @internal_listener.listen_to(event, &block) end |
#listeners ⇒ Object
43 44 45 |
# File 'lib/koine/event_manager/event_manager.rb', line 43 def listeners @listeners ||= [] end |
#publish(event) ⇒ Object
11 12 13 |
# File 'lib/koine/event_manager/event_manager.rb', line 11 def publish(event) trigger(event) end |
#subscribe(subscriber, to:) ⇒ Object
19 20 21 |
# File 'lib/koine/event_manager/event_manager.rb', line 19 def subscribe(subscriber, to:) @internal_listener.subscribe(subscriber, to: to) end |
#trigger(event) ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/koine/event_manager/event_manager.rb', line 35 def trigger(event) @internal_listener.trigger(event) listeners.each do |listener| dispatch(event, listener) { listener.trigger(event) } end end |
#unsubscribe(subscriber, from:) ⇒ Object
23 24 25 |
# File 'lib/koine/event_manager/event_manager.rb', line 23 def unsubscribe(subscriber, from:) @internal_listener.unsubscribe(subscriber, from: from) end |