Module ObservablePool
In: lib/observable_pool.rb

Methods

Classes and Modules

Class ObservablePool::Observer

Public Instance methods

[Source]

# File lib/observable_pool.rb, line 124
  def add_global_observer(observer)
    if defined? @observable_peers
      @observable_peers.each do |observable, obsv|
        obsv.add_observer(observer) unless observable.observer?(observer)
      end
    end
    @global_observer_peers = [] unless defined? @global_observer_peers
    @global_observer_peers << observer
  end

[Source]

# File lib/observable_pool.rb, line 134
  def add_global_observers(*observers)
    observers.each { |observer| add_global_observer(observer) }
  end

[Source]

# File lib/observable_pool.rb, line 39
  def add_observable(observable)
    unless observable.is_a?(Observable)
      raise(ArgumentError, "observable object must be Observale")
    end
    @observable_peer_mutex = Mutex.new unless defined? @observable_peer_mutex
    @observable_peers = {} unless defined? @observable_peers
    sync_observer = Observer.new(observable, @observable_peer_mutex)
    @observable_peers[observable] = sync_observer
    @global_observer_peers = [] unless defined? @global_observer_peers
    @global_observer_peers.each do |observer|
      sync_observer.add_observer(observer)
    end
    sync_observer
  end

[Source]

# File lib/observable_pool.rb, line 54
  def add_observables(*observables)
    observables.each { |observable| add_observable(observable) }
  end

[Source]

# File lib/observable_pool.rb, line 120
  def count_all_observers
    list_observers.size
  end

[Source]

# File lib/observable_pool.rb, line 163
  def count_global_observers
    if defined? @global_observer_peers
      @globale.observer_peers.size
    else
      0
    end
  end

[Source]

# File lib/observable_pool.rb, line 94
  def count_observables
    if defined? @observable_peers
      @observable_peers.size
    else
      0
    end
  end

[Source]

# File lib/observable_pool.rb, line 138
  def delete_global_observer(observer)
    if defined? @observable_peers
      @observable_peers.each do |observable, obsv|
        obsv.delete_observer(observer)
      end
    end
    @global_observer_peers.delete(observer) if defined? @global_observer_peers
  end

[Source]

# File lib/observable_pool.rb, line 147
  def delete_global_observers
    if defined? @global_observer_peers
      @global_observer_peers.dup.each do |global_observer|
        delete_global_observer(global_observer)
      end
    end
  end

[Source]

# File lib/observable_pool.rb, line 58
  def delete_observable(observable)
    @observable_peers.delete(observable) if defined? @observable_peers
  end

[Source]

# File lib/observable_pool.rb, line 62
  def delete_observables
    @observable_peers.clear if defined? @observable_peers
  end

[Source]

# File lib/observable_pool.rb, line 102
  def each_observables(&block)
    if defined? @observable_peers
      @observable_peers.each do |observable, observer|
        block[observable, observer]
      end
    end
  end

[Source]

# File lib/observable_pool.rb, line 171
  def global_observer?(observer)
    if defined? @global_observer_peers
      @global_observer_peers.include?(observer)
    else
      false
    end
  end

[Source]

# File lib/observable_pool.rb, line 110
  def list_all_observers
    observers = []
    if defined? @observable_peers
      @observable_peers.each do |observable, observer|
        observers += observer.list_observers
      end
    end
    observers.uniq
  end

[Source]

# File lib/observable_pool.rb, line 155
  def list_global_observers
    if defined? @global_observer_peers
      @global_observer_peers.dup
    else
      []
    end
  end

[Source]

# File lib/observable_pool.rb, line 74
  def list_observables
    if defined? @observable_peers
      @observable_peers.keys
    else
      []
    end
  end

[Source]

# File lib/observable_pool.rb, line 82
  def list_observables_observed(observer)
    observables = []
    if defined? @observable_peers
      @observable_peers.each do |observable, obsv|
        if obsv.list_observers.include?(observer)
          observables << observable
        end
      end
    end
    observables
  end

[Source]

# File lib/observable_pool.rb, line 66
  def observable(observable)
    @observable_peers[observable] if defined? @observable_peers
  end

[Source]

# File lib/observable_pool.rb, line 70
  def observable?(observable)
    @observable_peers.has_key?(observable) if defined? @observable_peers
  end

[Validate]