summaryrefslogtreecommitdiff
path: root/jni/ruby/lib/drb/observer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'jni/ruby/lib/drb/observer.rb')
-rw-r--r--jni/ruby/lib/drb/observer.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/jni/ruby/lib/drb/observer.rb b/jni/ruby/lib/drb/observer.rb
new file mode 100644
index 0000000..cab9ebc
--- /dev/null
+++ b/jni/ruby/lib/drb/observer.rb
@@ -0,0 +1,25 @@
+require 'observer'
+
+module DRb
+ # The Observable module extended to DRb. See Observable for details.
+ module DRbObservable
+ include Observable
+
+ # Notifies observers of a change in state. See also
+ # Observable#notify_observers
+ def notify_observers(*arg)
+ if defined? @observer_state and @observer_state
+ if defined? @observer_peers
+ @observer_peers.each do |observer, method|
+ begin
+ observer.send(method, *arg)
+ rescue
+ delete_observer(observer)
+ end
+ end
+ end
+ @observer_state = false
+ end
+ end
+ end
+end