Clase: Mongo::Operation::Context Privado

Hereda:
CsotTimeoutHolder Mostrar todo
Definido en:
lib/mongo/operación/contexto.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 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 Contexto.



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# Archivo 'lib/mongo/operation/context.rb', línea 38

def inicializar(
  cliente: nulo,
  sesión: nulo,
  id_global_de_conexión: nulo,
  operation_timeouts: {},
  ver: nulo,
  opciones: nulo
)
  si opciones
    si Cliente
      propagar ArgumentError, 'No se pueden especificar tanto el cliente como las opciones'
    end

    si sesión
      propagar ArgumentError, 'Nose pueden especificar ambas, sesión y opciones'
    end
  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

  @cliente = Cliente
  @sesión = sesión
  @view = vista
  @connection_global_id = connection_global_id
  @options = opciones
  super(sesión: sesión, operation_timeouts: tiempos de espera de operación)
end

Detalles de los atributos de instancia

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



68
69
70
# Archivo 'lib/mongo/operation/context.rb', línea 68

def Cliente
  @cliente
end

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



71
72
73
# Archivo 'lib/mongo/operation/context.rb', línea 71

def opciones
  @options
end

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



69
70
71
# Archivo 'lib/mongo/operation/context.rb', línea 69

def sesión
  @sesión
end

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



70
71
72
# Archivo 'lib/mongo/operation/context.rb', línea 70

def vista
  @view
end

Detalles del método de instancia

#abortando_transaction?Booleano

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:

  • (booleano)


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

def aborting_transaction?
  en_transacción? && sesión.aborting_transaction?
end

#any_retry_writes?booleano

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:

  • (booleano)


117
118
119
# Archivo 'lib/mongo/operation/context.rb', línea 117

def any_retry_writes?
  ¿reintentos_modernos_escrituras? || ¿legacy_retry_writes?
end

#¿confirmando_transacción?Booleano

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:

  • (booleano)


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

def guardando_transacción?
  en_transacción? && sesión.guardando_transacción?
end

#connection_global_idObjeto

Este método forma parte de una API privada. Debe evitarlo 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 connection_global_id
  @connection_global_id || sesión&.pinned_connection_global_id
end

#descifrar(cmd) ⇒ 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.



159
160
161
# Archivo 'lib/mongo/operation/context.rb', línea 159

def descifrar(cmd)
  encriptador.descifrar(cmd, sí mismo)
end

#desencriptar?Booleano

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:

  • (booleano)


155
156
157
# Archivo 'lib/mongo/operation/context.rb', línea 155

def ¿descifrar?
  !!Cliente&.encriptador
end

#encriptar(db_name, cmd) ⇒ Object

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



151
152
153
# Archivo 'lib/mongo/operation/context.rb', línea 151

def cifrado(db_name, cmd)
  encriptador.cifrado(db_name, cmd, sí mismo)
end

#cifrado?booleano

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:

  • (booleano)


147
148
149
# Archivo 'lib/mongo/operation/context.rb', línea 147

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

#encriptadorObjeto

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



163
164
165
166
167
168
169
# Archivo 'lib/mongo/operation/context.rb', línea 163

def encriptador
  si Cliente&.encriptador
    Cliente.encriptador
  else
    propagar Error::InternalDriverError, 'El encriptador sólo debe ser accesible cuando el cifrado deba realizarse'
  end
end

#in_transaction?Boolean

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:

  • (booleano)


93
94
95
# Archivo 'lib/mongo/operation/context.rb', línea 93

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

#inspectObject

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



171
172
173
# Archivo 'lib/mongo/operation/context.rb', línea 171

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 forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve:

  • (booleano)


113
114
115
# Archivo 'lib/mongo/operation/context.rb', línea 113

def ¿legacy_retry_writes?
  Cliente && !Cliente.opciones[retry_writes] && Cliente.max_write_retries > 0
end

#modern_retry_writes?booleano

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:

  • (booleano)


109
110
111
# Archivo 'lib/mongo/operation/context.rb', línea 109

def ¿reintentos_modernos_escrituras?
  Cliente && Cliente.opciones[retry_writes]
end

#refresh(connection_global_id: @connection_global_id, timeout_ms: nil, view: nil) ⇒ Operación::Contexto

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 un nuevo Operation::Context con la fecha límite actualizada y relativa al momento actual.

Devuelve:



77
78
79
80
81
82
83
84
85
86
87
# Archivo 'lib/mongo/operation/context.rb', línea 77

def actualizar(id_global_de_conexión: @connection_global_id, tiempo_de_espera_ms: nulo, ver: nulo)
  tiempos de espera de operación = @operation_timeouts
  tiempos de espera de operación = tiempos de espera de operación.fusionar(operation_timeout_ms: timeout_ms) si timeout_ms

  sí mismo.clase.Nuevo(cliente: Cliente,
                 sesión: sesión,
                 id_global_de_conexión: connection_global_id,
                 operation_timeouts: tiempos de espera de operación,
                 ver: vista || sí mismo.vista,
                 opciones: opciones)
end

#retry?Booleano

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

Si la operación es un reintento (verdadero) o un intento inicial (falso).

Devuelve:

  • (booleano)


130
131
132
# Archivo 'lib/mongo/operation/context.rb', línea 130

def ¿rever?
  !!@is_retry
end

#server_apiObjeto

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



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

def server_api
  si Cliente
    Cliente.opciones[API del servidor]
  elsif opciones
    opciones[API del servidor]
  end
end

#transacción_inicial?Booleano

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:

  • (booleano)


97
98
99
# Archivo 'lib/mongo/operation/context.rb', línea 97

def ¿transacción_inicial?
  sesión&.¿transacción_inicial? || false
end

#with(**opts) ⇒ 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.

Devuelve un nuevo contexto con los parámetros cambiados según los argumentos proporcionados.

Parámetros:

  • opta (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.



139
140
141
142
143
144
145
# Archivo 'lib/mongo/operation/context.rb', línea 139

def con(**opta)
  dup.tocar hacer |copy|
    opta.cada hacer |k, v|
      copy.conjunto_de_variables_de_instancia("@#{k}", v)
    end
  end
end