A TupleEntry is a Tuple (i.e. a possible entry in some Tuplespace) together with expiry and cancellation data.
# File tmp/rubies/ruby-2.3.8/lib/rinda/tuplespace.rb, line 27
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.
# File tmp/rubies/ruby-2.3.8/lib/rinda/tuplespace.rb, line 111
def [](key)
@tuple[key]
end
Retrieves key from the tuple.
# File tmp/rubies/ruby-2.3.8/lib/rinda/tuplespace.rb, line 45
def alive?
!canceled? && !expired?
end
A TupleEntry is dead when it is canceled or expired.
# File tmp/rubies/ruby-2.3.8/lib/rinda/tuplespace.rb, line 38
def cancel
@cancel = true
end
Marks this TupleEntry as canceled.
# File tmp/rubies/ruby-2.3.8/lib/rinda/tuplespace.rb, line 58
def canceled?; @cancel; end
Returns the canceled status.
# File tmp/rubies/ruby-2.3.8/lib/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
Has this tuple expired? (true/false).
A tuple has expired when its expiry timer based on the sec argument to initialize runs out.
# File tmp/rubies/ruby-2.3.8/lib/rinda/tuplespace.rb, line 118
def fetch(key)
@tuple.fetch(key)
end
Fetches key from the tuple.
# File tmp/rubies/ruby-2.3.8/lib/rinda/tuplespace.rb, line 145
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.
# File tmp/rubies/ruby-2.3.8/lib/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
# File tmp/rubies/ruby-2.3.8/lib/rinda/tuplespace.rb, line 132
def make_tuple(ary)
Rinda::Tuple.new(ary)
end
Creates a Rinda::Tuple for ary.
# File tmp/rubies/ruby-2.3.8/lib/rinda/tuplespace.rb, line 85
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 tmp/rubies/ruby-2.3.8/lib/rinda/tuplespace.rb, line 125
def size
@tuple.size
end
The size of the tuple.
# File tmp/rubies/ruby-2.3.8/lib/rinda/tuplespace.rb, line 53
def value; @tuple.value; end
Return the object which makes up the tuple itself: the Array or Hash.