module Signals::Publisher::InstanceMethods

Public Instance Methods

broadcast(event, *args) click to toggle source

Broadcasts an event to all of the subscribed listeners

# 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() click to toggle source

All of the listeners subscribed to a publisher @return [Set] a unique set of listeners

# File lib/signals/publisher.rb, line 38
def listeners
  @listeners ||= Set.new
end
on(event, &block) click to toggle source

Creates a one off listener that will respond to the event provided only @param [Object] event the event that is triggered

# File lib/signals/publisher.rb, line 20
def on(event, &block)
  listeners.add(BlockListener.new(event, &block))
end
subscribe(listener) click to toggle source

Subscribe a listener to the publisher @param [Object] listener

# File lib/signals/publisher.rb, line 26
def subscribe(listener)
  listeners.add(listener)
end
unsubscribe(listener) click to toggle source

Unsubscribe a listener from the publisher @param [Object] listener

# File lib/signals/publisher.rb, line 32
def unsubscribe(listener)
  listeners.delete(listener)
end