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
TupleEntry
based onary
with an optional renewer or expiry timesec
.
Instance Attribute Summary
-
#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).
- #expires rw
Instance Method Summary
-
#[](key)
Retrieves
key
from the tuple. -
#cancel
Marks this
TupleEntry
as canceled. -
#fetch(key)
Fetches
key
from the tuple. -
#make_expires(sec = nil)
- Returns an expiry Time based on
sec
which can be one of: Numeric sec
seconds 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
forary
. -
#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 26
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 57
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 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
#expires (rw)
[ GitHub ]# File 'lib/rinda/tuplespace.rb', line 17
attr_accessor :expires
Instance Method Details
#[](key)
Retrieves key
from the tuple.
# File 'lib/rinda/tuplespace.rb', line 110
def [](key) @tuple[key] end
#cancel
Marks this TupleEntry
as canceled.
# File 'lib/rinda/tuplespace.rb', line 37
def cancel @cancel = true end
#fetch(key)
Fetches key
from the tuple.
# File 'lib/rinda/tuplespace.rb', line 117
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 144
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
-
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 'lib/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
#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 84
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 124
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 52
def value; @tuple.value; end