Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more
Object
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 27
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 111
def [](key)
@tuple[key]
end
A TupleEntry is dead when it is canceled or expired.
# File rinda/tuplespace.rb, line 45
def alive?
!canceled? && !expired?
end
Marks this TupleEntry as canceled.
# File rinda/tuplespace.rb, line 38
def cancel
@cancel = true
end
Returns the canceled status.
# File rinda/tuplespace.rb, line 58
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 66
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 118
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 97
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 132
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.
false
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 85
def renew(sec_or_renewer)
sec, @renewer = get_renewer(sec_or_renewer)
@expires = make_expires(sec)
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.