In Files

  • rinda/tuplespace.rb

Parent

Included Modules

Rinda::TupleEntry

A TupleEntry is a Tuple (i.e. a possible entry in some Tuplespace) together with expiry and cancellation data.

Attributes

expires[RW]

Public Class Methods

new(ary, sec=nil) click to toggle source

Creates a TupleEntry based on ary with an optional renewer or expiry time sec.

A renewer must implement the renew method which returns a Numeric, nil, or true to indicate when the tuple has expired.

 
               # File rinda/tuplespace.rb, line 25
def initialize(ary, sec=nil)
  @cancel = false
  @expires = nil
  @tuple = make_tuple(ary)
  @renewer = nil
  renew(sec)
end
            

Public Instance Methods

[](key) click to toggle source

Retrieves key from the tuple.

 
               # File rinda/tuplespace.rb, line 109
def [](key)
  @tuple[key]
end
            
alive?() click to toggle source

A TupleEntry is dead when it is canceled or expired.

 
               # File rinda/tuplespace.rb, line 43
def alive?
  !canceled? && !expired?
end
            
cancel() click to toggle source

Marks this TupleEntry as canceled.

 
               # File rinda/tuplespace.rb, line 36
def cancel
  @cancel = true
end
            
canceled?() click to toggle source

Returns the canceled status.

 
               # File rinda/tuplespace.rb, line 56
def canceled?; @cancel; end
            
expired?() click to toggle source

Has this tuple expired? (true/false).

A tuple has expired when its expiry timer based on the sec argument to initialize runs out.

 
               # File rinda/tuplespace.rb, line 64
def expired?
  return true unless @expires
  return false if @expires > Time.now
  return true if @renewer.nil?
  renew(@renewer)
  return true unless @expires
  return @expires < Time.now
end
            
fetch(key) click to toggle source

Fetches key from the tuple.

 
               # File rinda/tuplespace.rb, line 116
def fetch(key)
  @tuple.fetch(key)
end
            
make_expires(sec=nil) click to toggle source

Returns an expiry Time based on sec which can be one of:

Numeric

sec seconds into the future

true

the expiry time is the start of 1970 (i.e. expired)

nil

it is Tue Jan 19 03:14:07 GMT Standard Time 2038 (i.e. when UNIX clocks will die)

 
               # File rinda/tuplespace.rb, line 95
def make_expires(sec=nil)
  case sec
  when Numeric
    Time.now + sec
  when true
    Time.at(1)
  when nil
    Time.at(2**31-1)
  end
end
            
make_tuple(ary) click to toggle source

Creates a Rinda::Tuple for ary.

 
               # File rinda/tuplespace.rb, line 130
def make_tuple(ary)
  Rinda::Tuple.new(ary)
end
            
renew(sec_or_renewer) click to toggle source

Reset the expiry time according to sec_or_renewer.

nil

it is set to expire in the far future.

false

it has expired.

Numeric

it will expire in that many seconds.

Otherwise the argument refers to some kind of renewer object which will reset its expiry time.

 
               # File rinda/tuplespace.rb, line 83
def renew(sec_or_renewer)
  sec, @renewer = get_renewer(sec_or_renewer)
  @expires = make_expires(sec)
end
            
size() click to toggle source

The size of the tuple.

 
               # File rinda/tuplespace.rb, line 123
def size
  @tuple.size
end
            
value() click to toggle source

Return the object which makes up the tuple itself: the Array or Hash.

 
               # File rinda/tuplespace.rb, line 51
def value; @tuple.value; end
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.

blog comments powered by Disqus