From 151f1241c665b0307234e931bec2c32bfea0138d Mon Sep 17 00:00:00 2001 From: seki Date: Wed, 18 Jun 2003 15:45:12 +0000 Subject: import from drb-2.0.4b3 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/drb/extserv.rb | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 lib/drb/extserv.rb (limited to 'lib/drb/extserv.rb') diff --git a/lib/drb/extserv.rb b/lib/drb/extserv.rb new file mode 100644 index 0000000000..f05bae5264 --- /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 + -- cgit v1.2.3