Módulo: Mongo::Operation::Executable Private

Incluye:
ResponseHandling
Incluido en:
Base de mensajes de operación
Definido en:
lib/mongo/operación/compartido/ejecutable.rb

Overview

Este módulo forma parte de una API privada. Debe evitar su uso siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

Comportamiento ejecutable compartido de operaciones.

Desde:

  • 2.5.2

Colapso delresumen de atributos de instancia

Colapso del resumen del método de instancia

Detalles de los atributos de instancia

#contextOperation::Context | 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 el contexto de operación utilizado para ejecutar esta operación.

Devuelve:

  • (Operación::Contexto | nil)

    el contexto de operación utilizado para ejecutar esta operación.

Desde:

  • 2.5.2



33
34
35
# Archivo 'lib/mongo/operation/shared/executable.rb', línea 33

def context
  @contexto
end

Detalles del método de instancia

#do_execute(conexión, contexto, opciones = {}) ⇒ 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.

Desde:

  • 2.5.2



35
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Archivo 'lib/mongo/operation/shared/executable.rb', línea 35

def hacer_ejecutar(conexión, context, opciones = {})
  # Guarda el contexto en la instancia, para evitar tener que pasarlo como un
  # parámetro para cada método. Hay muchos métodos heredados que...
  # todavía lo aceptamos como parámetro, que se deja como está por ahora.
  # Minimizar el impacto de este cambio. En el futuro, podría ser...
  # Es razonable refactorizar las cosas para que se utilice esta referencia guardada.
  @contexto = context

  sesión&.materializarse_si_es_necesario
  desfijar_tal vez(sesión, conexión) hacer
    agregar etiquetas de error(conexión, context) hacer
      comprobar_si_hay_error_de_red hacer
        agregar_diagnósticos_del_servidor(conexión) hacer
          get_result(conexión, context, opciones).grifo hacer |resultado|
            Si sesión
              Si sesión.¿en_transacción? &&
                conexión.Descripción.¿equilibrador de carga?
              entonces
                Si sesión.pinned_connection_global_id
                  a no ser que sesión.pinned_connection_global_id == conexión.id_global
                    propagar(
                      Error::InternalDriverError,
                      "Seesperaba que la operación utilizara la conexión n.°{session.pinned_connection_global_id }, pero utilizó laconexiónn.° { connection. global_id }"
                    )
                  end
                else
                  sesión.pin_a_conexión(conexión.id_global)
                  conexión.perno
                end
              end

              Si sesión.¿instantánea? && !sesión.marca de tiempo de la instantánea
                sesión.marca de tiempo de la instantánea = resultado.marca de tiempo de la instantánea
              end
            end

            Si resultado.has_cursor_id? &&
              conexión.Descripción.¿equilibrador de carga?
            entonces
              Si resultado.cursor_id == 0
                conexión.unpin
              else
                conexión.perno
              end
            end
            resultado del proceso(resultado, conexión)
          end
        end
      end
    end
  end
end

#ejecutar(conexión, contexto:, opciones: {}) ⇒ 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.

Desde:

  • 2.5.2



88
89
90
91
92
93
94
95
96
97
98
# Archivo 'lib/mongo/operation/shared/executable.rb', línea 88

def ejecutar(conexión, context:, opciones: {})
  Si Lint.¿activado?
    a no ser que conexión.is_a?(Mongo::Servidor::Conexión)
      propagar Error::LintError, "Elargumento deconexión es detipo incorrecto: #{ connection }"
    end
  end

  hacer_ejecutar(conexión, context, opciones).grifo hacer |resultado|
    validate_result(resultado, conexión, context)
  end
end