Clase: Mongo::Operation::Context Privado
- Hereda:
-
CsotTimeoutHolder
- Objeto
- CsotTimeoutHolder
- Mongo::Operation::Context
- Definido en:
- lib/mongo/operation/context.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.
Contexto para las operaciones.
Contiene varios objetos necesarios para tomar decisiones sobre la ejecución de operaciones en un solo contenedor y proporciona métodos de fachada para los objetos contenidos.
El contexto contiene parámetros para las operaciones y, como tal, mientras se prepare una operación, nada en el contexto debe cambiar. Cuando el resultado de la operación está trámite, los datos devueltos por el contexto pueden cambiar (por ejemplo, porque se anula una transacción), pero en ese punto la operación ya no debería leer nada del contexto. Debido a que los datos de contexto pueden cambiar durante la ejecución de una operación, los objetos de contexto no deben reutilizarse para múltiples operaciones.
Resumen de atributos de la instancia colapsar
- #cliente ⇒ Objeto Solo lectura privado
- #opciones ⇒ Objeto Solo lectura privado
- #sesión ⇒ Objeto Solo lectura privado
- #view ⇒ Object Solo lectura privado
Atributos heredados de CsotTimeoutHolder
#plazo, #operation_timeouts, #timeout_sec
Resumen del método de instancia colapsar
- #aborting_transaction? ⇒ Boolean privado
- #any_retry_writes? ⇒ Booleano privado
- #committing_transaction? ⇒ Booleano privado
- #connection_global_id ⇒ Objeto privado
- #decrypt(cmd) ⇒ Objeto privado
- #desencriptar? ⇒ booleano privado
- #encryptar(db_name, cmd) ⇒ Object privado
- #cifrado? ⇒ booleano privado
- #encrypter ⇒ Objeto privado
- #in_transaction? ⇒ Boolean privado
-
#iniciar(cliente: nil, sesión: nil, connection_global_id: nil, operation_timeouts: {}, vista: nil, opciones: nil) ⇒ Contexto
constructor
privado
Una nueva instancia de Context.
- #inspect ⇒ Object privado
- #legacy_retry_writes? ⇒ booleano privado
- #modern_retry_writes? ⇒ Booleano privado
-
#overload_only_retry? ⇒ Booleano
privado
Si cada reintento hasta ahora se ha debido únicamente a sobrecarga.
-
#refresh(connection_global_id: @connection_global_id, timeout_ms: nil, view: nil) ⇒ operación::Context
privado
Devuelve un nuevo Operation::Context con el plazo actualizado y relativo al momento actual.
-
#¿reintentar? ⇒ Booleano
privado
Si la operación es un reintento (true) o un intento inicial (false).
- #server_api ⇒ Object privado
- #starting_transaction? ⇒ booleano privado
-
#con(**opts) ⇒ Objeto
privado
Devuelve un nuevo contexto con los parámetros cambiados según los argumentos proporcionados.
Métodos heredados de CsotTimeoutHolder
#check_timeout!, #csot?, #remaining_timeout_ms, #remaining_timeout_ms!, #remaining_timeout_sec, #remaining_timeout_sec!, #timeout?, #timeout_expired?
Detalles del Constructor
#initialize(client: nil, session: nil, connection_global_id: nil, operation_timeouts: {}, view: nil, options: nil) ⇒ Contexto
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve una nueva instancia de Contexto.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# Archivo 'lib/mongo/operation/context.rb', línea 36 def inicializar( cliente: nulo, sesión: nulo, connection_global_id: nulo, operation_timeouts: {}, ver: nulo, opciones: nulo ) si propagar ArgumentError, 'No se pueden especificar tanto el cliente como las opciones' si Cliente propagar ArgumentError, 'No se pueden especificar la sesión y las opciones al mismo tiempo' si sesión end si connection_global_id && sesión&.pinned_connection_global_id propagar ArgumentError, 'Intentando fijar el contexto a una conexión cuando la sesión ya está fijada a una conexión.' end @client = Cliente @sesión = sesión @view = vista @connection_global_id = connection_global_id @options = super(sesión: sesión, operation_timeouts: operation_timeouts) end |
Detalles de atributo de instancias
#client ⇒ Object (solo lectura)
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
63 64 65 |
# Archivo 'lib/mongo/operation/context.rb', línea 63 def Cliente @client end |
#opciones ⇒ Objeto (solo lectura)
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
63 64 65 |
# Archivo 'lib/mongo/operation/context.rb', línea 63 def @options end |
#sesión ⇒ Objeto (solo lectura)
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
63 64 65 |
# Archivo 'lib/mongo/operation/context.rb', línea 63 def sesión @sesión end |
#vista ⇒ Objeto (solo lectura)
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
63 64 65 |
# Archivo 'lib/mongo/operation/context.rb', línea 63 def vista @view end |
Detalles del método de instancia
#abortando_transaction? ⇒ Booleano
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
97 98 99 |
# Archivo 'lib/mongo/operation/context.rb', línea 97 def aborting_transaction? en_transacción? && sesión.aborting_transaction? end |
#any_retry_writes? ⇒ booleano
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
109 110 111 |
# Archivo 'lib/mongo/operation/context.rb', línea 109 def any_retry_writes? modern_retry_writes? || ¿legacy_retry_writes? end |
#committing_transaction? ⇒ booleano
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
93 94 95 |
# Archivo 'lib/mongo/operation/context.rb', línea 93 def guardando_transacción? en_transacción? && sesión.guardando_transacción? end |
#connection_global_id ⇒ Objeto
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
81 82 83 |
# Archivo 'lib/mongo/operation/context.rb', línea 81 def connection_global_id @connection_global_id || sesión&.pinned_connection_global_id end |
#desencriptar(cmd) ⇒ Objeto
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
156 157 158 |
# Archivo 'lib/mongo/operation/context.rb', línea 156 def descifrar(cmd) encriptador.descifrar(cmd, sí mismo) end |
#desencriptar? ⇒ Booleano
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
152 153 154 |
# Archivo 'lib/mongo/operation/context.rb', línea 152 def ¿descifrar? !!Cliente&.encriptador end |
#encriptar(db_name, cmd) ⇒ Object
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
148 149 150 |
# Archivo 'lib/mongo/operation/context.rb', línea 148 def cifrado(db_name, cmd) encriptador.cifrado(db_name, cmd, sí mismo) end |
#cifrado? ⇒ booleano
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
144 145 146 |
# Archivo 'lib/mongo/operation/context.rb', línea 144 def cifrado? Cliente&.encriptador&.cifrado? || false end |
#encrypter ⇒ Object
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
160 161 162 163 164 165 166 |
# Archivo 'lib/mongo/operation/context.rb', línea 160 def encriptador a menos que Cliente&.encriptador propagar Error::InternalDriverError, 'El encriptador sólo debe ser accesible cuando el cifrado deba realizarse' end Cliente.encriptador end |
#in_transaction? ⇒ Boolean
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
85 86 87 |
# Archivo 'lib/mongo/operation/context.rb', línea 85 def en_transacción? sesión&.en_transacción? || false end |
#inspect ⇒ Object
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
168 169 170 |
# Archivo 'lib/mongo/operation/context.rb', línea 168 def inspeccionar "#<#{self.class} connection_global_id=#{connection_global_id.inspect} deadline=#{deadline.inspect} options=#{.inspect} operation_timeouts=#{operation_timeouts.inspect}>" end |
#legacy_retry_writes? ⇒ Booleano
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
105 106 107 |
# Archivo 'lib/mongo/operation/context.rb', línea 105 def ¿legacy_retry_writes? Cliente && !Cliente.[retry_writes] && Cliente.max_write_retries > 0 end |
#modern_retry_writes? ⇒ booleano
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
101 102 103 |
# Archivo 'lib/mongo/operation/context.rb', línea 101 def modern_retry_writes? Cliente && Cliente.[retry_writes] end |
#sobrecarga_solo_reintentar? ⇒ Booleano
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Si cada reintento hasta ahora se ha debido únicamente a sobrecarga.
127 128 129 |
# Archivo 'lib/mongo/operation/context.rb', línea 127 def overload_only_retry? !!@overload_only_retry end |
#refresh(connection_global_id: @connection_global_id, timeout_ms: nil, view: nil) ⇒ Operación::Contexto
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve un nuevo Operation::Context con el plazo actualizado y relativo al momento actual.
69 70 71 72 73 74 75 76 77 78 79 |
# Archivo 'lib/mongo/operation/context.rb', línea 69 def actualizar(connection_global_id: @connection_global_id, tiempo_de_espera_ms: nulo, ver: nulo) operation_timeouts = @operation_timeouts operation_timeouts = operation_timeouts.fusionar(operation_timeout_ms: timeout_ms) si timeout_ms sí mismo.clase.Nuevo(cliente: Cliente, sesión: sesión, connection_global_id: connection_global_id, operation_timeouts: operation_timeouts, ver: vista || sí mismo.vista, opciones: ) end |
#retry? ⇒ Booleano
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Si la operación es un reintento (true) o un intento inicial (false).
122 123 124 |
# Archivo 'lib/mongo/operation/context.rb', línea 122 def ¿volver a intentarlo? !!@is_retry end |
#server_api ⇒ Objeto
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
113 114 115 116 117 118 119 |
# Archivo 'lib/mongo/operation/context.rb', línea 113 def server_api si Cliente Cliente.[API del servidor] elsif [API del servidor] end end |
#starting_transaction? ⇒ Booleano
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
89 90 91 |
# Archivo 'lib/mongo/operation/context.rb', línea 89 def ¿iniciando_transacción? sesión&.¿iniciando_transacción? || false end |
#with(**opts) ⇒ Objeto
Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve un nuevo contexto con los parámetros cambiados según los argumentos proporcionados.
136 137 138 139 140 141 142 |
# Archivo 'lib/mongo/operation/context.rb', línea 136 def con(**opciones) dup.tocar hacer |copy| opciones.cada hacer |k, v| copy.instance_variable_set("@#{k}", v) end end end |