Hello,

> # Is there any documentation of DRuby/Rinda/TupleSpace in english?
> 
> I haven't found anything either. I think you need to look elsewhere.
> 
> JavaSpaces in Java are Sun's implementation of TupleSpaces.
> Rinda is the Ruby version of Linda :-)
> 
> If you already know this, then there's code samples left to look at in the
> downloads.


Rinda's small sample is included in drb-1.3.2.

  drb-1.3.2
  --> http://www2a.biglobe.ne.jp/~seki/ruby/drb-1.3.2.tar.gz


== Code

* drb-1.3.2/sample/rindac.rb (client)
----------------------------
require 'drb/drb'
require 'drb/rinda'

uri = ARGV.shift || raise("usage: #{$0} <server_uri>")

DRb.start_service
tuple = TupleSpaceProxy.new(DRbObject.new(nil, uri))

tuples = (1..10).collect do |n|
  ['sum', DRb.uri, n]
end

tuple.out(*tuples)

(1..10).each do |n|
  ans = tuple.in(['ans', DRb.uri, n, nil])
  p [ans[2], ans[3]]
end


* drb-1.3.2/sample/rindas.rb ('sum' server)
----------------------------
require 'drb/drb'
require 'drb/rinda'

def do_it(v)
  puts "do_it(#{v})"
  v + v
end

uri = ARGV.shift || raise("usage: #{$0} <server_uri>")

DRb.start_service
tuple = TupleSpaceProxy.new(DRbObject.new(nil, uri))

while true
  r = tuple.in(['sum', nil, nil])
  v = do_it(r[2])
  tuple.out(['ans', r[1], r[2], v])
end


* your_tuplespace.rb
--------------------
require 'drb/drb'
require 'drb/rinda'

uri = ARGV.shift
DRb.start_service(uri, TupleSpace.new)
puts DRb.uri
puts '[return] to exit'
gets



== How to play?

host A
% ruby your_tuplespace.rb druby://hostA:12345


host B
% ruby rindas.rb druby://hostA:12345
% ruby rindas.rb druby://hostA:12345


host C
% ruby rindac.rb druby://hostA:12345


== Tuple

Tuple is Array. 

  * ['abc', 2, 5]
  * 'matrix-1', 1, 6, 3.14]
  * ["family", "is-sister", "Caronlyn", "Elinor"]

nil is wildcard.

  * in(['abc'. 2, 5])  
    # --> ['abc', 2, 5]
  * in(['matrix-1'. nil, nil, 3.14])
    # --> ['matrix-1', 1, 6, 3.14]
  * in(['family'. 'is-sister', String, String])
    # --> ["family", "is-sister", "Caronlyn", "Elinor"] 


Seki