diff options
Diffstat (limited to 'lib/drb/extserv.rb')
-rw-r--r-- | lib/drb/extserv.rb | 19 |
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? |