Object
![show/hide quicksearch [+]](../images/find.png)
A TupleEntry is a Tuple (i.e. a possible entry in some Tuplespace) together with expiry and cancellation data.
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 26
def initialize(ary, sec=nil)
  @cancel = false
  @expires = nil
  @tuple = make_tuple(ary)
  @renewer = nil
  renew(sec)
end
             
            Retrieves key from the tuple.
 
               # File rinda/tuplespace.rb, line 110
def [](key)
  @tuple[key]
end
             
            A TupleEntry is dead when it is canceled or expired.
 
               # File rinda/tuplespace.rb, line 44
def alive?
  !canceled? && !expired?
end
             
            Marks this TupleEntry as canceled.
 
               # File rinda/tuplespace.rb, line 37
def cancel
  @cancel = true
end
             
            Returns the canceled status.
 
               # File rinda/tuplespace.rb, line 57
def canceled?; @cancel; end
             
            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 65
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
             
            Fetches key from the tuple.
 
               # File rinda/tuplespace.rb, line 117
def fetch(key)
  @tuple.fetch(key)
end
             
            Returns an expiry Time based on sec which can be one of:
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 96
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
             
            Creates a Rinda::Tuple for ary.
 
               # File rinda/tuplespace.rb, line 131
def make_tuple(ary)
  Rinda::Tuple.new(ary)
end
             
            Reset the expiry time according to sec_or_renewer.
nil
it is set to expire in the far future.
true
it has expired.
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 84
def renew(sec_or_renewer)
  sec, @renewer = get_renewer(sec_or_renewer)
  @expires = make_expires(sec)
end