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