File: extserv_test.rb

package info (click to toggle)
ruby3.3 3.3.8-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 153,620 kB
  • sloc: ruby: 1,244,308; ansic: 836,474; yacc: 28,074; pascal: 6,748; sh: 3,913; python: 1,719; cpp: 1,158; makefile: 742; asm: 712; javascript: 394; lisp: 97; perl: 62; awk: 36; sed: 23; xml: 4
file content (80 lines) | stat: -rw-r--r-- 1,326 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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