Sha256: f3a4d16863d2537927d2ac13e1259d89b2ab0dd945a69a8b035723a148da5f3e

Contents?: true

Size: 729 Bytes

Versions: 1

Compression:

Stored size: 729 Bytes

Contents

# encoding: utf-8

module FiniteMachine

  # A class responsibile for storage of event subscribers
  class Subscribers
    include Enumerable

    def initialize(machine)
      @machine     = machine
      @subscribers = []
      @mutex       = Mutex.new
    end

    def each(&block)
      @subscribers.each(&block)
    end

    def index(subscriber)
      @subscribers.index(subscriber)
    end

    def empty?
      @subscribers.empty?
    end

    def subscribe(*observers)
      observers.each { |observer| @subscribers << observer }
    end

    def visit(event)
      each { |subscriber| event.notify subscriber }
    end

    def reset
      @subscribers.clear
      self
    end

  end # Subscribers
end # FiniteMachine

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
finite_machine-0.2.0 lib/finite_machine/subscribers.rb