Spec-Zone.ru › Ruby 2.4

класс Rinda::TupleEntry

Родитель:
Объект
Включенные модули:
DRb::DRbUndumped

Класс TupleEntry представляет собой Кортеж (т.е. возможную запись в некотором пространстве кортежей) вместе с данными о времени истечения срока действия и отмене.

Атрибуты

expires[RW]

Открытые методы класса

new(ary, sec=nil) Показать исходный код
# 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, который возвращает числовое значение, null или true, чтобы указать, когда кортеж истек.

Открытые методы экземпляра

[](key) Показать исходный код
# File lib/rinda/tuplespace.rb, line 110
def [](key)
  @tuple[key]
end

Извлекает key из кортежа.

alive?() Показать исходный код
# File lib/rinda/tuplespace.rb, line 44
def alive?
  !canceled? && !expired?
end

Экземпляр TupleEntry считается неактивным, когда он отменён или срок его действия истек.

cancel() Показать исходный код
# File lib/rinda/tuplespace.rb, line 37
def cancel
  @cancel = true
end

Отмечает данный экземпляр TupleEntry как отменённый.

canceled?() Показать исходный код
# File lib/rinda/tuplespace.rb, line 57
def canceled?; @cancel; end

Возвращает статус отмены.

expired?() Показать исходный код
# 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 аргументе инициализации, заканчивается.

fetch(key) Показать исходный код
# File lib/rinda/tuplespace.rb, line 117
def fetch(key)
  @tuple.fetch(key)
end

Извлекает key из кортежа.

make_expires(sec=nil) Показать исходный код
# 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, которое может быть одним из:

Числовое значение

sec секунды в будущем

true

время истечения срока действия — начало 1970 года (т.е. истек)

nil

время истечения срока действия — вторник 1 января 19 03:14:07 GMT по стандартному времени 2038 (т.е. время истечения срока действия системных часов Unix)

make_tuple(ary) Показать исходный код
# File lib/rinda/tuplespace.rb, line 131
def make_tuple(ary)
  Rinda::Tuple.new(ary)
end

Создаёт Rinda::Tuple для ary.

renew(sec_or_renewer) Показать исходный код
# 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

срок действия истек.

Числовое значение

срок действия истечёт через указанное количество секунд.

В противном случае аргумент относится к какому-либо объекту продления, который переустановит время истечения срока действия.

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(it) Показать исходный код
# 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 и объект продления или null.

Для true, nil, или числового значения возвращает это значение и nil (нет фактического объекта продления). В противном случае возвращает значение времени истечения срока действия, полученное при вызове it.renew и объект продления.

Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API