Clase: Mongo::Operation::Context Privado

Hereda:
CsotTimeoutHolder Mostrar todo
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

Atributos heredados de CsotTimeoutHolder

#plazo, #operation_timeouts, #timeout_sec

Resumen del método de instancia colapsar

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 opciones
    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 = opciones
  super(sesión: sesión, operation_timeouts: operation_timeouts)
end

Detalles de atributo de instancias

#clientObject (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

#opcionesObjeto (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 opciones
  @options
end

#sesiónObjeto (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

#vistaObjeto (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.

Devuelve:

  • (booleano)


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.

Devuelve:

  • (booleano)


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.

Devuelve:

  • (booleano)


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_idObjeto

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.

Devuelve:

  • (booleano)


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.

Devuelve:

  • (booleano)


144
145
146
# Archivo 'lib/mongo/operation/context.rb', línea 144

def cifrado?
  Cliente&.encriptador&.cifrado? || false
end

#encrypterObject

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.

Devuelve:

  • (booleano)


85
86
87
# Archivo 'lib/mongo/operation/context.rb', línea 85

def en_transacción?
  sesión&.en_transacción? || false
end

#inspectObject

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=#{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.

Devuelve:

  • (booleano)


105
106
107
# Archivo 'lib/mongo/operation/context.rb', línea 105

def ¿legacy_retry_writes?
  Cliente && !Cliente.opciones[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.

Devuelve:

  • (booleano)


101
102
103
# Archivo 'lib/mongo/operation/context.rb', línea 101

def modern_retry_writes?
  Cliente && Cliente.opciones[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.

Devuelve:

  • (booleano)


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.

Devuelve:



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: 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).

Devuelve:

  • (booleano)


122
123
124
# Archivo 'lib/mongo/operation/context.rb', línea 122

def ¿volver a intentarlo?
  !!@is_retry
end

#server_apiObjeto

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.opciones[API del servidor]
  elsif opciones
    opciones[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.

Devuelve:

  • (booleano)


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.

Parámetros:

  • opciones (encriptada)

    un conjunto personalizable de opciones

Hash de opciones (**opts):

  • :is_retry (true|false)

    Si la operación es un reintento o un primer intento.



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