diff options
| author | seki <seki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-11-26 14:24:29 +0000 |
|---|---|---|
| committer | seki <seki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-11-26 14:24:29 +0000 |
| commit | ef893a523089395d6598fb2e79e979cdcef44081 (patch) | |
| tree | d7334a5c5b26e5ec9879efb679a163704b3b6d86 /lib | |
| parent | 484253779edecd8b63448180855f56f51770e281 (diff) | |
| download | ruby-ef893a523089395d6598fb2e79e979cdcef44081.tar.gz ruby-ef893a523089395d6598fb2e79e979cdcef44081.tar.xz ruby-ef893a523089395d6598fb2e79e979cdcef44081.zip | |
* lib/drb/extserv.rb (initialize, stop_service): synchronize with
ExtServManager.
* test/drb/test_drb.rb (TestDRbEval): ignored.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@14024 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
| -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 7da8130c2..af5225051 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? |
