Class: Rinda::TupleEntry
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
|
Subclasses:
|
|
| Super Chains via Extension / Inclusion / Inheritance | |
|
Instance Chain:
self,
DRbUndumped
|
|
| Inherits: | Object |
| Defined in: | lib/rinda/tuplespace.rb |
Overview
A TupleEntry is a Tuple (i.e. a possible entry in some Tuplespace) together with expiry and cancellation data.
Class Method Summary
-
.new(ary, sec = nil) ⇒ TupleEntry
constructor
Creates a
TupleEntrybased onarywith an optional renewer or expiry timesec.
Instance Attribute Summary
- #expires rw
-
#alive? ⇒ Boolean
readonly
A TupleEntry is dead when it is canceled or expired.
-
#canceled? ⇒ Boolean
readonly
Returns the canceled status.
-
#expired? ⇒ Boolean
readonly
Has this tuple expired? (true/false).
Instance Method Summary
-
#[](key)
Retrieves
keyfrom the tuple. -
#cancel
Marks this
TupleEntryas canceled. -
#fetch(key)
Fetches
keyfrom the tuple. -
#make_expires(sec = nil)
- Returns an expiry Time based on
secwhich can be one of: Numeric secseconds into the futuretrue- 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.
- the expiry time is the start of 1970 (i.e. expired)
- Returns an expiry Time based on
-
#make_tuple(ary)
Creates a Tuple for
ary. -
#renew(sec_or_renewer)
Reset the expiry time according to
sec_or_renewer. -
#size
The size of the tuple.
-
#value
Return the object which makes up the tuple itself: the Array or Hash.
-
#get_renewer(it)
private
Returns a valid argument to make_expires and the renewer or nil.
Constructor Details
.new(ary, sec = nil) ⇒ TupleEntry
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 'lib/rinda/tuplespace.rb', line 27
def initialize(ary, sec=nil) @cancel = false @expires = nil @tuple = make_tuple(ary) @renewer = nil renew(sec) end
Instance Attribute Details
#alive? ⇒ Boolean (readonly)
A TupleEntry is dead when it is canceled or expired.
#canceled? ⇒ Boolean (readonly)
Returns the canceled status.
# File 'lib/rinda/tuplespace.rb', line 58
def canceled?; @cancel; end
#expired? ⇒ Boolean (readonly)
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 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
#expires (rw)
[ GitHub ]# File 'lib/rinda/tuplespace.rb', line 18
attr_accessor :expires
Instance Method Details
#[](key)
Retrieves key from the tuple.
# File 'lib/rinda/tuplespace.rb', line 111
def [](key) @tuple[key] end
#cancel
Marks this TupleEntry as canceled.
# File 'lib/rinda/tuplespace.rb', line 38
def cancel @cancel = true end
#fetch(key)
Fetches key from the tuple.
# File 'lib/rinda/tuplespace.rb', line 118
def fetch(key) @tuple.fetch(key) end
#get_renewer(it) (private)
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 '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
#make_expires(sec = nil)
Returns an expiry Time based on sec which can be one of:
- Numeric
-
secseconds 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 '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
#make_tuple(ary)
Creates a Tuple for ary.
#renew(sec_or_renewer)
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 85
def renew(sec_or_renewer) sec, @renewer = get_renewer(sec_or_renewer) @expires = make_expires(sec) end
#size
The size of the tuple.
# File 'lib/rinda/tuplespace.rb', line 125
def size @tuple.size end
#value
Return the object which makes up the tuple itself: the Array or Hash.
# File 'lib/rinda/tuplespace.rb', line 53
def value; @tuple.value; end