summaryrefslogtreecommitdiff
path: root/sample/drb/extserv_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'sample/drb/extserv_test.rb')
-rw-r--r--sample/drb/extserv_test.rb80
1 files changed, 80 insertions, 0 deletions
diff --git a/sample/drb/extserv_test.rb b/sample/drb/extserv_test.rb
new file mode 100644
index 0000000..83d871a
--- /dev/null
+++ b/sample/drb/extserv_test.rb
@@ -0,0 +1,80 @@
+=begin
+ dRuby sample
+ Copyright (c) 2000 Masatoshi SEKI
+
+= How to play
+
+* Terminal 1
+
+ % ruby -I. extserv_test.rb server
+ druby://yourhost:12345
+
+* Terminal 2
+
+ % ruby -I. extserv_test.rb druby://yourhost:12345
+ ...
+
+=end
+
+require 'drb/drb'
+
+def ARGV.shift
+ it = super()
+ raise "usage:\nserver: #{$0} server [<uri>]\nclient: #{$0} [quit] <uri>" unless it
+ it
+end
+
+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'
+ require 'drb/extserv'
+
+ front = Foo.new(cmd)
+ server = DRb::DRbServer.new(nil, front)
+ es = DRb::ExtServ.new(ARGV.shift, ARGV.shift, server)
+ server.thread.join
+
+when 'server'
+ require 'drb/extservm'
+
+ DRb::ExtServManager.command['itest1'] = "ruby -I. #{$0} itest1"
+ DRb::ExtServManager.command['itest2'] = "ruby -I. #{$0} itest2"
+
+ s = DRb::ExtServManager.new
+ DRb.start_service(ARGV.shift, s)
+ puts DRb.uri
+ DRb.thread.join
+
+
+else
+ uri = (cmd == 'quit') ? ARGV.shift : cmd
+
+ DRb.start_service
+ s = DRbObject.new(nil, uri)
+ t1 = s.service('itest1').front
+ puts t1
+ t2 = s.service('itest2').front
+ puts t2
+ puts t1.hello(t2)
+ if (cmd == 'quit')
+ s.service('itest1').stop_service
+ s.service('itest2').stop_service
+ end
+end
+