Object
TupleBag is an unordered collection of tuples. It is the basis of Tuplespace.
Removes ary
from the TupleBag.
# File rinda/tuplespace.rb, line 318 def delete(ary) size = ary.size @hash.fetch(size, []).delete(ary) end
Delete tuples which dead tuples from the TupleBag, returning the deleted tuples.
# File rinda/tuplespace.rb, line 355 def delete_unless_alive deleted = [] @hash.keys.each do |size| ary = [] @hash[size].each do |tuple| if tuple.alive? ary.push(tuple) else deleted.push(tuple) end end @hash[size] = ary end deleted end
Finds a live tuple that matches template
.
# File rinda/tuplespace.rb, line 335 def find(template) @hash.fetch(template.size, []).find do |tuple| tuple.alive? && template.match(tuple) end end
Finds all live tuples that match template
.
# File rinda/tuplespace.rb, line 326 def find_all(template) @hash.fetch(template.size, []).find_all do |tuple| tuple.alive? && template.match(tuple) end end
Finds all tuples in the TupleBag which when
treated as templates, match tuple
and are alive.
# File rinda/tuplespace.rb, line 345 def find_all_template(tuple) @hash.fetch(tuple.size, []).find_all do |template| template.alive? && template.match(tuple) end end
true
if the TupleBag to see if it
has any expired entries.
# File rinda/tuplespace.rb, line 297 def has_expires? @hash.each do |k, v| v.each do |tuple| return true if tuple.expires end end false end
Add ary
to the TupleBag.
# File rinda/tuplespace.rb, line 309 def push(ary) size = ary.size @hash[size] ||= [] @hash[size].push(ary) end