類別 Rinda::TupleEntry
一個 TupleEntry
是 Tuple
(也就是 Tuplespace 中可能的項目)加上過期和取消資料。
屬性
expires[RW]
公開類別方法
new(ary, sec=nil) 按一下以切換來源
根據 ary
建立一個 TupleEntry
,並加上一個選擇性的更新者或過期時間 sec
。
更新者必須實作 renew
方法,傳回 Numeric
、nil 或 true 來表示元組過期時間。
# 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
公開實例方法
[](key) 按一下以切換來源
從元組中擷取 key
。
# File lib/rinda/tuplespace.rb, line 110 def [](key) @tuple[key] end
alive?() 按一下以切換來源
當 TupleEntry
被取消或過期時,它就死了。
# File lib/rinda/tuplespace.rb, line 44 def alive? !canceled? && !expired? end
cancel() 按一下以切換來源
將此 TupleEntry
標記為已取消。
# File lib/rinda/tuplespace.rb, line 37 def cancel @cancel = true end
canceled?() 按一下以切換來源
傳回已取消的狀態。
# File lib/rinda/tuplespace.rb, line 57 def canceled?; @cancel; end
expired?() 按一下以切換來源
此元組是否已過期?(true/false)
當元組的過期計時器(根據初始化的 sec
參數)用完時,此元組即已過期。
# 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
fetch(key) 按一下以切換來源
從元組中擷取 key
。
# File lib/rinda/tuplespace.rb, line 117 def fetch(key) @tuple.fetch(key) end
make_expires(sec=nil) 按一下以切換來源
make_tuple(陣列) 按一下以切換來源
為 陣列
建立 Rinda::Tuple
。
# File lib/rinda/tuplespace.rb, line 131 def make_tuple(ary) Rinda::Tuple.new(ary) end
renew(秒或更新) 按一下以切換來源
根據 秒或更新
重設過期時間。
無
-
設定在遙遠的未來過期。
真
-
已過期。
數字
-
將在那麼多秒後過期。
否則,引數會參照某種類型的更新物件,該物件會重設其過期時間。
# 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() 按一下以切換來源
元組的大小。
# File lib/rinda/tuplespace.rb, line 124 def size @tuple.size end
私人實例方法
get_renewer(它) 按一下以切換來源
傳回 make_expires
的有效引數和更新或無。
給定 真
、無
或 數字
,傳回該值和 無
(沒有實際更新)。否則,傳回呼叫 it.renew
的過期值和更新。
# 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