class Rinda::TupleEntry
A TupleEntry is a Tuple (i.e. a possible entry in some Tuplespace) together with expiry and cancellation data.
Attributes
Public Class Methods
# File lib/rinda/tuplespace.rb, line 25 def initialize(ary, sec=nil) @cancel = false @expires = nil @tuple = make_tuple(ary) @renewer = nil renew(sec) end
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.
Public Instance Methods
# File lib/rinda/tuplespace.rb, line 109 def [](key) @tuple[key] end
Retrieves key from the tuple.
# File lib/rinda/tuplespace.rb, line 43 def alive? !canceled? && !expired? end
A TupleEntry is dead when it is canceled or expired.
# File lib/rinda/tuplespace.rb, line 36 def cancel @cancel = true end
Marks this TupleEntry as canceled.
# File lib/rinda/tuplespace.rb, line 56 def canceled?; @cancel; end
Returns the canceled status.
# File lib/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
Has this tuple expired? (true/false).
A tuple has expired when its expiry timer based on the sec argument to initialize runs out.
# File lib/rinda/tuplespace.rb, line 116 def fetch(key) @tuple.fetch(key) end
Fetches key from the tuple.
# File lib/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 Returns an expiry Time based on sec which can be one of:
# File lib/rinda/tuplespace.rb, line 130 def make_tuple(ary) Rinda::Tuple.new(ary) end
Creates a Rinda::Tuple for ary.
# File lib/rinda/tuplespace.rb, line 83 def renew(sec_or_renewer) sec, @renewer = get_renewer(sec_or_renewer) @expires = make_expires(sec) end
Reset the expiry time according to sec_or_renewer.
- 
nil -  
it is set to expire in the far future.
 - 
true -  
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 lib/rinda/tuplespace.rb, line 123 def size @tuple.size end
The size of the tuple.
# File lib/rinda/tuplespace.rb, line 51 def value; @tuple.value; end
Return the object which makes up the tuple itself: the Array or Hash.
Private Instance Methods
# File lib/rinda/tuplespace.rb, line 143
def get_renewer(it)
  case it
  when Numeric, true, nil
    return it, nil
  else
    begin
      return it.renew, it
    rescue Exception
      return it, nil
    end
  end
end Returns a valid argument to #make_expires and the renewer or nil.
Given true, nil, or Numeric, returns that value and nil (no actual renewer). Otherwise it returns an expiry value from calling it.renew and the renewer.
    Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.