diff options
author | seki <seki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-06-18 15:45:12 +0000 |
---|---|---|
committer | seki <seki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-06-18 15:45:12 +0000 |
commit | 3babfd92df08cc0c61cfa4cae5d8ffcdbc8c3923 (patch) | |
tree | 6ca5c5e535d66aaf094e954446846955f2e18a88 /lib/drb/extserv.rb | |
parent | 7fe632bef8d8b608f8763e1a36b9b08ed5b7c83a (diff) | |
download | ruby-3babfd92df08cc0c61cfa4cae5d8ffcdbc8c3923.tar.gz ruby-3babfd92df08cc0c61cfa4cae5d8ffcdbc8c3923.tar.xz ruby-3babfd92df08cc0c61cfa4cae5d8ffcdbc8c3923.zip |
import from drb-2.0.4b3
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/drb/extserv.rb')
-rw-r--r-- | lib/drb/extserv.rb | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/lib/drb/extserv.rb b/lib/drb/extserv.rb new file mode 100644 index 000000000..f05bae526 --- /dev/null +++ b/lib/drb/extserv.rb @@ -0,0 +1,67 @@ +=begin + external service + Copyright (c) 2000,2002 Masatoshi SEKI +=end + +require 'drb/drb' + +module DRb + class ExtServ + include DRbUndumped + + def initialize(there, name, server=nil) + @server = server || DRb::primary_server + @name = name + ro = DRbObject.new(nil, there) + @invoker = ro.regist(name, DRbObject.new(self, @server.uri)) + end + attr_reader :server + + def front + DRbObject.new(nil, @server.uri) + end + + def stop_service + @invoker.unregist(@name) + server = @server + @server = nil + Thread.new do + sleep 1 + server.stop_service + end + true + end + + def alive? + @server ? @server.alive? : false + end + end +end + +if __FILE__ == $0 + class Foo + include DRbUndumped + + def initialize(str) + @str = str + end + + def hello(it) + "#{it}: #{self}" + end + + def to_s + @str + end + end + + cmd = ARGV.shift + case cmd + when 'itest1', 'itest2' + front = Foo.new(cmd) + manager = DRb::DRbServer.new(nil, front) + es = DRb::ExtService.new(ARGV.shift, ARGV.shift, manager) + es.server.thread.join + end +end + |