Class: Rinda::TupleBag

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

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

### Methods

delete delete_unless_alive find find_all find_all_template has_expires? push

### Public Instance methods

delete(ary)

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_unless_alive()

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

find(template)

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

find_all(template)

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

find_all_template(tuple)

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

has_expires?()

`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

push(ary)

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]