summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/drb/extserv.rb19
1 files changed, 13 insertions, 6 deletions
diff --git a/lib/drb/extserv.rb b/lib/drb/extserv.rb
index 7da8130c2b..af52250518 100644
--- a/lib/drb/extserv.rb
+++ b/lib/drb/extserv.rb
@@ -4,16 +4,21 @@
=end
require 'drb/drb'
+require 'monitor'
module DRb
class ExtServ
+ include MonitorMixin
include DRbUndumped
def initialize(there, name, server=nil)
+ super()
@server = server || DRb::primary_server
@name = name
ro = DRbObject.new(nil, there)
- @invoker = ro.regist(name, DRbObject.new(self, @server.uri))
+ synchronize do
+ @invoker = ro.regist(name, DRbObject.new(self, @server.uri))
+ end
end
attr_reader :server
@@ -22,11 +27,13 @@ module DRb
end
def stop_service
- @invoker.unregist(@name)
- server = @server
- @server = nil
- server.stop_service
- true
+ synchronize do
+ @invoker.unregist(@name)
+ server = @server
+ @server = nil
+ server.stop_service
+ true
+ end
end
def alive?