Class: Koine::EventManager::EventManager

Inherits:
Object
  • Object
show all
Defined in:
lib/koine/event_manager/event_manager.rb

Instance Method Summary collapse

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

#listenersObject



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