Class: Rinda::TupleBag
| Relationships & Source Files | |
| Namespace Children | |
| Classes: | |
| Inherits: | Object | 
| Defined in: | lib/rinda/tuplespace.rb | 
Overview
TupleBag is an unordered collection of tuples. It is the basis of Tuplespace.
Instance Attribute Summary
- 
    
      #has_expires?  ⇒ Boolean 
    
    readonly
    trueif theTupleBagto see if it has any expired entries.
Instance Method Summary
- 
    
      #delete(tuple)  
    
    Removes tuplefrom theTupleBag.
- 
    
      #delete_unless_alive  
    
    Delete tuples which dead tuples from the TupleBag, returning the deleted tuples.
- 
    
      #find(template)  
    
    Finds a live tuple that matches template.
- 
    
      #find_all(template)  
    
    Finds all live tuples that match template.
- 
    
      #find_all_template(tuple)  
    
    Finds all tuples in the TupleBagwhich when treated as templates, matchtupleand are alive.
- 
    
      #push(tuple)  
    
    Add tupleto theTupleBag.
- #bin_for_find(template) private
- #bin_key(tuple) private
- #each_entry(&blk) private
Instance Attribute Details
    #has_expires?  ⇒ Boolean  (readonly)
  
true if the TupleBag to see if it has any expired entries.
# File 'lib/rinda/tuplespace.rb', line 324
def has_expires? @enum.find do |tuple| tuple.expires end end
Instance Method Details
#bin_for_find(template) (private)
[ GitHub ]# File 'lib/rinda/tuplespace.rb', line 413
def bin_for_find(template) key = bin_key(template) key ? @hash.fetch(key, []) : @enum end
#bin_key(tuple) (private)
[ GitHub ]# File 'lib/rinda/tuplespace.rb', line 404
def bin_key(tuple) head = tuple[0] if head.class == Symbol return head else false end end
#delete(tuple)
Removes tuple from the TupleBag.
# File 'lib/rinda/tuplespace.rb', line 342
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 'lib/rinda/tuplespace.rb', line 382
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
#each_entry(&blk) (private)
[ GitHub ]# File 'lib/rinda/tuplespace.rb', line 398
def each_entry(&blk) @hash.each do |k, v| v.each(&blk) end end
#find(template)
Finds a live tuple that matches template.
# File 'lib/rinda/tuplespace.rb', line 362
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 'lib/rinda/tuplespace.rb', line 353
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 'lib/rinda/tuplespace.rb', line 372
def find_all_template(tuple) @enum.find_all do |template| template.alive? && template.match(tuple) end end
#push(tuple)
Add tuple to the TupleBag.