Module: Signals::Publisher::InstanceMethods
- Defined in:
- lib/signals/publisher.rb
Instance Method Summary collapse
-
#broadcast(event, *args) ⇒ Object
Broadcasts an event to all of the subscribed listeners.
-
#listeners ⇒ Set
All of the listeners subscribed to a publisher.
-
#on(event, &block) ⇒ Object
Creates a one off listener that will respond to the event provided only.
-
#subscribe(listener) ⇒ Object
Subscribe a listener to the publisher.
-
#unsubscribe(listener) ⇒ Object
Unsubscribe a listener from the publisher.
Instance Method Details
#broadcast(event, *args) ⇒ Object
Broadcasts an event to all of the subscribed listeners
11 12 13 14 15 16 |
# File 'lib/signals/publisher.rb', line 11 def broadcast(event, *args) listeners.each do |listener| listener.call(event, *args) end args.one? ? args.first : args end |
#listeners ⇒ Set
All of the listeners subscribed to a publisher
38 39 40 |
# File 'lib/signals/publisher.rb', line 38 def listeners @listeners ||= Set.new end |
#on(event, &block) ⇒ Object
Creates a one off listener that will respond to the event provided only
20 21 22 |
# File 'lib/signals/publisher.rb', line 20 def on(event, &block) listeners.add(BlockListener.new(event, &block)) end |
#subscribe(listener) ⇒ Object
Subscribe a listener to the publisher
26 27 28 |
# File 'lib/signals/publisher.rb', line 26 def subscribe(listener) listeners.add(listener) end |
#unsubscribe(listener) ⇒ Object
Unsubscribe a listener from the publisher
32 33 34 |
# File 'lib/signals/publisher.rb', line 32 def unsubscribe(listener) listeners.delete(listener) end |