class FiniteMachine::Subscribers
A class responsibile for storage of event subscribers
Public Class Methods
new()
click to toggle source
Initialize a subscribers collection
@api public
Calls superclass method
# File lib/finite_machine/subscribers.rb, line 14 def initialize super @subscribers = [] end
Public Instance Methods
each(&block)
click to toggle source
Iterate over subscribers
@api public
# File lib/finite_machine/subscribers.rb, line 22 def each(&block) @subscribers.each(&block) end
empty?()
click to toggle source
Check if anyone is subscribed
@return [Boolean]
@api public
# File lib/finite_machine/subscribers.rb, line 38 def empty? @subscribers.empty? end
index(subscriber)
click to toggle source
Return index of the subscriber
@api public
# File lib/finite_machine/subscribers.rb, line 29 def index(subscriber) @subscribers.index(subscriber) end
reset()
click to toggle source
Reset subscribers
@return [self]
@api public
# File lib/finite_machine/subscribers.rb, line 83 def reset @subscribers.clear self end
size()
click to toggle source
Number of subscribed listeners
@return [Integer]
@api public
# File lib/finite_machine/subscribers.rb, line 74 def size synchronize { @subscribers.size } end
subscribe(*observers)
click to toggle source
Add listener to subscribers
@param [Array] observers
@return [undefined]
@api public
# File lib/finite_machine/subscribers.rb, line 49 def subscribe(*observers) synchronize do observers.each { |observer| @subscribers << observer } end end
visit(hook_event, *data)
click to toggle source
Visit subscribers and notify
@param [HookEvent] hook_event
the callback event to notify about
@return [undefined]
@api public
# File lib/finite_machine/subscribers.rb, line 63 def visit(hook_event, *data) each { |subscriber| synchronize { hook_event.notify(subscriber, *data) } } end