类 Rinda::TupleEntry
一个 TupleEntry
是一个 Tuple
(即元组空间中的一个可能的条目),以及过期和取消数据。
属性
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(ary) 点击切换源代码
为 ary
创建一个 Rinda::Tuple
。
# File lib/rinda/tuplespace.rb, line 131 def make_tuple(ary) Rinda::Tuple.new(ary) end
renew(sec_or_renewer) 点击切换源代码
根据 sec_or_renewer
重置过期时间。
nil
-
它被设置为在遥远的未来过期。
true
-
它已经过期了。
Numeric
-
它将在这么多秒后过期。
否则,参数指的是某种续期对象,它将重置其过期时间。
# 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(it) 点击切换源代码
返回一个有效的参数到 make_expires
以及续期器或 nil。
给定 true
、nil
或 Numeric
,返回该值和 nil
(没有实际的续期器)。否则,它将返回从调用 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