Clase: Mongo::CsotTimeoutHolder Privado

Hereda:
Objeto
  • Objeto
Mostrar todo
Definido en:
lib/mongo/csot_timeout_holder.rb

Overview

Esta clase forma parte de una API privada. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.

Esta clase almacena el tiempo de espera de la operación y proporciona los métodos auxiliares correspondientes.

Subclases conocidas directas

Operación::Contexto

Resumen de atributos de la instancia colapsar

Resumen del método de instancia colapsar

Detalles del constructor

#initialize(sesión: nil, operation_timeouts: {}) ⇒ CsotTimeoutHolder

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve una nueva instancia de CsotTimeoutHolder.



22
23
24
25
26
# Archivo 'lib/mongo/csot_timeout_holder.rb', línea 22

def inicializar(sesión: nulo, operation_timeouts: {})
  @deadline = calcular_fecha_límite(tiempos de espera de operación, sesión)
  @operation_timeouts = tiempos de espera de operación
  @timeout_sec = (@deadline - Utils.monotonic_time si @deadline)
end

Detalles de los atributos de instancia

#fecha límiteObjeto (solo lectura)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.



28
29
30
# Archivo 'lib/mongo/csot_timeout_holder.rb', línea 28

def fecha límite
  @deadline
end

#operation_timeoutsObjeto (solo lectura)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.



28
29
30
# Archivo 'lib/mongo/csot_timeout_holder.rb', línea 28

def tiempos de espera de operación
  @operation_timeouts
end

#timeout_secObjeto (solo lectura)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.



28
29
30
# Archivo 'lib/mongo/csot_timeout_holder.rb', línea 28

def tiempo_límite_seg
  @timeout_sec
end

Detalles del método de instancia

#check_timeout!Objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Verifica si el tiempo de espera de la operación ha expirado y, en ese caso, genera un error apropiado.

Aumenta:



84
85
86
87
88
# Archivo 'lib/mongo/csot_timeout_holder.rb', línea 84

def verificar_tiempo_de_espera!
  return a menos que timeout_expired?

  propagar Error::TimeoutError, "Laoperación tardó más de #{timeout_sec} segundos"
end

#csot?true | false

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve si CSOT está habilitado para la operación.

Devuelve:

  • (true | false)

    Si CSOT está activado para la operación



31
32
33
# Archivo 'lib/mongo/csot_timeout_holder.rb', línea 31

def csot?
  !fecha límite.nil?
end

#remaining_timeout_msInteger | nil

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve los milisegundos restantes del tiempo de espera establecido para la operación; si no se establece ningún tiempo de espera, o el tiempo de espera es 0 (significa ilimitado), devuelve nulo.

Devuelve:

  • (Integer | nil)

    Devuelve los milisegundos restantes del tiempo de espera establecido para la operación; si no se establece ningún tiempo de espera, o el tiempo de espera es 0 (significa ilimitado), devuelve nulo.



58
59
60
61
62
63
# Archivo 'lib/mongo/csot_timeout_holder.rb', línea 58

def tiempo de espera restante ms
  Segundos = remaining_timeout_sec
  return nulo si Segundos.nil?

  (Segundos * 1_000).to_i
end

#remaining_timeout_ms!objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.



65
66
67
68
# Archivo 'lib/mongo/csot_timeout_holder.rb', línea 65

def ¡tiempo de espera restante_ms!
  verificar_tiempo_de_espera!
  tiempo de espera restante ms
end

#remaining_timeout_secFloat | nil

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve los segundos restantes del tiempo de espera establecido para la operación; si no se establece ningún tiempo de espera, o el tiempo de espera es 0 (significa ilimitado), devuelve nulo.

Devuelve:

  • (Float | nil)

    Devuelve los segundos restantes del tiempo de espera establecido para la operación; si no se establece ningún tiempo de espera, o el tiempo de espera es 0 (significa ilimitado), devuelve nulo.



44
45
46
47
48
# Archivo 'lib/mongo/csot_timeout_holder.rb', línea 44

def remaining_timeout_sec
  return nulo a menos que ¿se acabó el tiempo?

  fecha límite - Utils.monotonic_time
end

#remaining_timeout_sec!objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.



50
51
52
53
# Archivo 'lib/mongo/csot_timeout_holder.rb', línea 50

def remaining_timeout_sec!
  verificar_tiempo_de_espera!
  remaining_timeout_sec
end

#¿timeout?true | false

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve falso si CSOT no está habilitado o si CSOT está configurado en 0 (significa ilimitado); de lo contrario, es verdadero.

Devuelve:

  • (true | false)

    Devuelve falso si CSOT no está habilitado o si CSOT está configurado en 0 (significa ilimitado); de lo contrario, es verdadero.



37
38
39
# Archivo 'lib/mongo/csot_timeout_holder.rb', línea 37

def ¿se acabó el tiempo?
  ![ nulo, 0 ].incluir?(@deadline)
end

#¿tiempo de espera expirado?verdadero | falso

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve si expiró el tiempo de espera para la operación. Si no se ha configurado tiempo de espera, este método retorna falso.

Devuelve:

  • (true | false)

    Si el tiempo de espera para la operación expiró. Si no se ha configurado tiempo de espera, este método retorna falso.



72
73
74
75
76
77
78
# Archivo 'lib/mongo/csot_timeout_holder.rb', línea 72

def timeout_expired?
  si ¿se acabó el tiempo?
    Utils.monotonic_time >= fecha límite
  else
    false
  end
end