類別 Rinda::TupleEntry

一個 TupleEntryTuple(也就是 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) 按一下以切換來源

傳回一個根據 sec 的過期 Timesec 可以是下列之一

數字

sec 秒後

過期時間為 1970 年初 (即已過期)

為星期二 1 月 19 日 03:14:07 GMT 標準 時間 2038 年 (即 UNIX 時鐘將會失效的時間)

# 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(陣列) 按一下以切換來源

陣列建立 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
value() 按一下以切換來源

傳回組成元組本身的物件:陣列雜湊

# File lib/rinda/tuplespace.rb, line 52
def value; @tuple.value; 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