Skip to Content Skip to Search

TupleBag is an unordered collection of tuples. It is the basis of Tuplespace.

Namespace
Methods
D
F
H
P

Instance Public methods

delete(tuple)

Removes tuple from the TupleBag.

# File ruby/lib/rinda/tuplespace.rb, line 341
def delete(tuple)
  key = bin_key(tuple)
  bin = @hash[key]
  return nil unless bin
  bin.delete(tuple)
  @hash.delete(key) if bin.empty?
  tuple
end

delete_unless_alive()

Delete tuples which dead tuples from the TupleBag, returning the deleted tuples.

# File ruby/lib/rinda/tuplespace.rb, line 381
def delete_unless_alive
  deleted = []
  @hash.each do |key, bin|
    bin.delete_if do |tuple|
      if tuple.alive?
        false
      else
        deleted.push(tuple)
        true
      end
    end
  end
  deleted
end

find(template)

Finds a live tuple that matches template.

# File ruby/lib/rinda/tuplespace.rb, line 361
def find(template)
  bin_for_find(template).find do |tuple|
    tuple.alive? && template.match(tuple)
  end
end

find_all(template)

Finds all live tuples that match template.

# File ruby/lib/rinda/tuplespace.rb, line 352
def find_all(template)
  bin_for_find(template).find_all do |tuple|
    tuple.alive? && template.match(tuple)
  end
end

find_all_template(tuple)

Finds all tuples in the TupleBag which when treated as templates, match tuple and are alive.

# File ruby/lib/rinda/tuplespace.rb, line 371
def find_all_template(tuple)
  @enum.find_all do |template|
    template.alive? && template.match(tuple)
  end
end

has_expires?()

true if the TupleBag to see if it has any expired entries.

# File ruby/lib/rinda/tuplespace.rb, line 323
def has_expires?
  @enum.find do |tuple|
    tuple.expires
  end
end

push(tuple)

Add tuple to the TupleBag.

# File ruby/lib/rinda/tuplespace.rb, line 332
def push(tuple)
  key = bin_key(tuple)
  @hash[key] ||= TupleBin.new
  @hash[key].add(tuple)
end