1 require 'romp' 2 3 class Bar 4 attr_reader :i 5 6 def initialize(i, romp) 7 @i = i 8 @romp = romp 9 end 10 11 def release() 12 @romp.delete_reference(self) 13 end 14 end 15 16 class Foo < Bar 17 # Initialize @i to 0 18 def initialize(romp) 19 super(0, romp) 20 @romp = romp 21 end 22 23 # Set @i 24 def foo(i) 25 @i = i 26 end 27 28 # Return a reference to a new Bar object with Bar.i = @i + 1 29 def bar() 30 b = Bar.new(@i + 1, @romp) 31 obj = @romp.create_reference(b) 32 return obj 33 end 34 35 # Test iteration 36 def each() 37 yield 1 38 yield 2 39 yield 3 40 end 41 42 def throw_exception2() 43 raise RuntimeError 44 end 45 46 # Test exception 47 def throw_exception() 48 throw_exception2() 49 end 50 end 51 52 if ARGV.size > 1 or ARGV[0] == "-h" or ARGV[0] == '-H' then 53 puts <<END 54 Usage: #{$0} <url> 55 Example urls: 56 tcpromp://localhost:4242 57 udpromp://localhost:4242 58 unixromp:///tmp/foo 59 END 60 end 61 62 url = ARGV[0] || "tcpromp://localhost:4242" 63 server = ROMP::Server.new(url, false) 64 65 f = Foo.new(server) 66 server.bind(f, "foo") 67 server.thread.join