Class Rinda::TupleBag
In: rinda/tuplespace.rb
Parent: Object

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

Methods

Public Instance methods

Removes ary from the TupleBag.

[Source]

# 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.

[Source]

# 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.

[Source]

# 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.

[Source]

# 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.

[Source]

# 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.

[Source]

# 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.

[Source]

# File rinda/tuplespace.rb, line 309
    def push(ary)
      size = ary.size
      @hash[size] ||= []
      @hash[size].push(ary)
    end

[Validate]