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