класс Rinda::TupleEntry
Элемент TupleEntry представляет собой запись Tuple (то есть потенциальную запись в некотором пространстве кортежей) вместе с данными о времени истечения срока действия и отмене.
Атрибуты
Публичные методы класса
# 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
Создает TupleEntry на основе ary с необязательным обновляющим объектом или временем истечения срока действия sec.
Обновляющий объект должен реализовывать метод renew, который возвращает Numeric, nil или true, чтобы указать, когда кортеж истек.
Публичные методы экземпляра
# File lib/rinda/tuplespace.rb, line 110 def [](key) @tuple[key] end
Возвращает key из кортежа.
# File lib/rinda/tuplespace.rb, line 44 def alive? !canceled? && !expired? end
Элемент TupleEntry считается неактивным, когда он отменён или истек.
# File lib/rinda/tuplespace.rb, line 37 def cancel @cancel = true end
Помечает этот TupleEntry как отменённый.
# File lib/rinda/tuplespace.rb, line 57 def canceled?; @cancel; end
Возвращает статус отмены.
# 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
Истек ли этот кортеж? (true/false).
Кортеж истек, когда таймер истечения срока действия, основанный на аргументе sec при инициализации, закончился.
# File lib/rinda/tuplespace.rb, line 117 def fetch(key) @tuple.fetch(key) end
Извлекает key из кортежа.
# 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 Возвращает время истечения срока действия Time на основе sec, которое может быть одним из:
# File lib/rinda/tuplespace.rb, line 131 def make_tuple(ary) Rinda::Tuple.new(ary) end
Создает Rinda::Tuple для ary.
# File lib/rinda/tuplespace.rb, line 84 def renew(sec_or_renewer) sec, @renewer = get_renewer(sec_or_renewer) @expires = make_expires(sec) end
Сбрасывает время истечения срока действия в соответствии с sec_or_renewer.
-
nil -
время истечения срока действия установлено на очень отдалённое будущее.
-
true -
истек срок действия.
-
Numeric -
срок действия истечёт через указанное количество секунд.
В противном случае аргумент относится к объекту обновления, который сбросит время истечения срока действия.
# File lib/rinda/tuplespace.rb, line 124 def size @tuple.size end
Размер кортежа.
Приватные методы экземпляра
# 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 и обновляющего объекта или nil.
Для true, nil, или Numeric возвращает это значение и nil (нет фактического обновления). В противном случае возвращает значение истечения срока действия, полученное с вызова it.renew и обновляющий объект.
Ruby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.