diff options
| author | seki <seki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-02-16 14:36:31 +0000 |
|---|---|---|
| committer | seki <seki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-02-16 14:36:31 +0000 |
| commit | 4ec3ebe9e4a490a0bbeae5f952adef0bd2c25468 (patch) | |
| tree | 411b178a9147b4050e0bb7a55381999277777d5e | |
| parent | 9be9e33f673c194e97184951548444861f1905b3 (diff) | |
| download | ruby-4ec3ebe9e4a490a0bbeae5f952adef0bd2c25468.tar.gz ruby-4ec3ebe9e4a490a0bbeae5f952adef0bd2c25468.tar.xz ruby-4ec3ebe9e4a490a0bbeae5f952adef0bd2c25468.zip | |
add lazy stop_service.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8@7979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
| -rw-r--r-- | ChangeLog | 6 | ||||
| -rw-r--r-- | lib/drb/drb.rb | 15 | ||||
| -rw-r--r-- | lib/drb/extserv.rb | 5 |
3 files changed, 17 insertions, 9 deletions
@@ -1,3 +1,9 @@ +Wed Feb 16 23:34:30 2005 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp> + + * lib/drb/drb.rb: add lazy stop_service. ([druby-ja:109]) + + * lib/drb/extserv.rb: ditto. + Wed Feb 16 17:07:57 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp> * ext/tk/tkutil.c: Follow the change of st.c (st_foreach) diff --git a/lib/drb/drb.rb b/lib/drb/drb.rb index a3abd4511..0fb791e3f 100644 --- a/lib/drb/drb.rb +++ b/lib/drb/drb.rb @@ -1352,7 +1352,11 @@ module DRb # Stop this server. def stop_service - @thread.kill + if Thread.current['DRb'] && Thread.current['DRb']['server'] == self + Thread.current['DRb']['stop_service'] = true + else + @thread.kill + end end # Convert a dRuby reference to the local object it refers to. @@ -1556,10 +1560,11 @@ module DRb end client.send_reply(succ, result) rescue nil ensure - unless succ - client.close - break - end + client.close unless succ + if Thread.current['DRb']['stop_service'] + Thread.new { stop_service } + end + break unless succ end end end diff --git a/lib/drb/extserv.rb b/lib/drb/extserv.rb index 4ed291305..7da8130c2 100644 --- a/lib/drb/extserv.rb +++ b/lib/drb/extserv.rb @@ -25,10 +25,7 @@ module DRb @invoker.unregist(@name) server = @server @server = nil - Thread.new do - sleep 1 - server.stop_service - end + server.stop_service true end |
