Rinda Primer
[1] Launch a Rinda TupleSpace
require 'rinda/tuplespace' DRb.start_service 'druby://:12345', Rinda::TupleSpace.new p DRb.uri DRb.thread.join
Output provides URI of which machine/port the TupleSpace communicates with.
[2] Start a server - in this example, it doubles input value
require 'rinda/tuplespace' DRb.start_service dro = DRbObject.new_with_uri 'druby://mach:12345' tsp = Rinda::TupleSpaceProxy.new dro loop { name, val = tsp.take ["q", nil] tsp.write ["a", val, val*2] }
[3] Finally throw in queries, for example
require 'rinda/tuplespace' DRb.start_service dro = DRbObject.new_with_uri 'druby://mach:12345' tsp = Rinda::TupleSpaceProxy.new dro [2,3,5,7,11,13].map {|n| tsp.write ["q", n] p tsp.take(["a", nil, nil]) }
Sample output
["a", 7, 14] ["a", 11, 22] ["a", 13, 26] ["a", 2, 4] ["a", 3, 6] ["a", 5, 10]
Notice an interesting output order.
Tips. How to kill a process: ctrl-c (unix), ctrl-break (Windows)