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 # server = ROMP::Server.new('tcpromp://localhost:4242', nil, true) 53 # server = ROMP::Server.new('udpromp://localhost:4242', nil, true) 54 server = ROMP::Server.new('unixromp:///tmp/foo', nil, true) 55 f = Foo.new(server) 56 server.bind(f, "foo") 57 server.thread.join