Sha256: a6c093cd379e5a14cad916ca3e4f11560b136a4f92589d4438bf91b00f0c3a72
Contents?: true
Size: 1.69 KB
Versions: 4
Compression:
Stored size: 1.69 KB
Contents
# Copyright: Copyright (c) 2004 Nicolas Despres. All rights reserved. # Author: Nicolas Despres <polrop@lrde.epita.fr>. # License: Gnu General Public License. # $LastChangedBy: polrop $ # $Id: drb_observable.rb 100 2005-01-15 07:45:14Z polrop $ require 'drb/observer' require 'observable' module DRb module DRbObservable include Observable undef notify_observers def notify_observers(*args, &block) if defined? @observer_state and @observer_state if defined? @observer_peers for i in @observer_peers.dup begin i.update(*args, &block) rescue delete_observer(i) end end end @observer_state = false end end def notify_observer(observer, *arg, &block) if defined? @observer_state and @observer_state if defined? @observer_peers if @observer_peers.include?(observer) begin observer.update(*arg, &block) rescue delete_observer(observer) end end end @observer_state = false end end end # module DRbObservable end # module DRb if defined? TEST_MODE or __FILE__ == $0 require 'test/unit/ui/yaml/testrunner' module DRb class ObservablePoolTest < ::Test::Unit::TestCase class Obsv include DRbObservable end class Foo def update(*args, &block) raise 'toto' end end def test_simple o = Obsv.new assert_respond_to(o, :list_observers) o.add_observer(Foo.new) assert_equal(1, o.count_observers) o.changed o.notify_observers('msg') assert_equal(0, o.count_observers) end end # class ObservablePoolTest end # module DRb end
Version data entries
4 entries across 4 versions & 2 rubygems
Version | Path |
---|---|
ttk-0.1.576 | ruby_ex/drb/drb_observable.rb |
ttk-0.1.580 | ruby_ex/drb/drb_observable.rb |
ttk-0.1.579 | ruby_ex/drb/drb_observable.rb |
vcs-0.2.148 | ruby_ex/drb/drb_observable.rb |