Module: Signals::Publisher::InstanceMethods

Defined in:
lib/signals/publisher.rb

Instance Method Summary collapse

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

#listenersSet

All of the listeners subscribed to a publisher

Returns:

  • (Set)

    a unique set of listeners



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

Parameters:

  • event (Object)

    the event that is triggered



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

Parameters:

  • listener (Object)


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

Parameters:

  • listener (Object)


32
33
34
# File 'lib/signals/publisher.rb', line 32

def unsubscribe(listener)
  listeners.delete(listener)
end