* io.c (rb_open_file): encoding in mode string was ignored if perm is
[ruby-svn.git] / sample / drb / extserv_test.rb
blob83d871a6a2ab0bc3926da0b5ad639601d694074b
1 =begin
2  dRuby sample
3         Copyright (c) 2000 Masatoshi SEKI 
5 = How to play
7 * Terminal 1
8   
9   % ruby -I. extserv_test.rb server
10   druby://yourhost:12345
12 * Terminal 2
14   % ruby -I. extserv_test.rb druby://yourhost:12345
15   ...
17 =end
19 require 'drb/drb'
21 def ARGV.shift
22   it = super()
23   raise "usage:\nserver: #{$0} server [<uri>]\nclient: #{$0} [quit] <uri>" unless it
24   it
25 end
27 class Foo
28   include DRbUndumped
29   
30   def initialize(str)
31     @str = str
32   end
33   
34   def hello(it)
35     "#{it}: #{self}"
36   end
38   def to_s
39     @str
40   end
41 end
43 cmd = ARGV.shift
44 case cmd
45 when 'itest1', 'itest2'
46   require 'drb/extserv'
48   front = Foo.new(cmd)
49   server = DRb::DRbServer.new(nil, front)
50   es = DRb::ExtServ.new(ARGV.shift, ARGV.shift, server)
51   server.thread.join
53 when 'server'
54   require 'drb/extservm'
56   DRb::ExtServManager.command['itest1'] = "ruby -I. #{$0} itest1"
57   DRb::ExtServManager.command['itest2'] = "ruby -I. #{$0} itest2"
58   
59   s = DRb::ExtServManager.new
60   DRb.start_service(ARGV.shift, s)
61   puts DRb.uri
62   DRb.thread.join
65 else
66   uri = (cmd == 'quit') ? ARGV.shift : cmd
68   DRb.start_service
69   s = DRbObject.new(nil, uri)
70   t1 = s.service('itest1').front
71   puts t1
72   t2 = s.service('itest2').front
73   puts t2
74   puts t1.hello(t2)
75   if (cmd == 'quit') 
76     s.service('itest1').stop_service
77     s.service('itest2').stop_service
78   end
79 end