Módulo: Mongo::Operation::Executable Privado

Incluye:
ResponseHandling
Incluido en:
Base de mensajes de operación
Definido en:
lib/mongo/operation/shared/executable.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

Resumen de atributos de la instancia colapsar

Resumen del método de instancia colapsar

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(connection, context, options = {}) ⇒ 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 do_execute(Conexión, context, opciones = {})
  # Guarda el contexto en la instancia, para evitar tener que pasarlo como un
  # parámetro para cada método individual. Existen 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 adelante, puede ser
  # es razonable refactorizar las cosas para que esta referencia guardada se use en su lugar.
  @contexto = context

  sesión&.materialize_if_needed
  desanclar_posiblemente(sesión, Conexión) hacer
    add_error_labels(Conexión, context) hacer
      check_for_network_error hacer
        add_server_diagnostics(Conexión) hacer
          get_result(Conexión, context, opciones).tocar hacer |Resultado|
            si sesión
              si sesión.en_transacción? &&
                Conexión.Descripción.load_balancer?
              entonces
                si sesión.pinned_connection_global_id
                  a menos que sesión.pinned_connection_global_id == Conexión.global_id
                    propagar(
                      Error::InternalDriverError,
                      "Se esperaba que la operación utilizara la conexión #{session.pinned_connection_global_id} pero utilizó #{connection.global_id}"
                    )
                  end
                else
                  sesión.pin_a_conexión(Conexión.global_id)
                  Conexión.alfiler
                end
              end

              si sesión.¿instantánea? && !sesión.timestamp_de_captura
                sesión.timestamp_de_captura = Resultado.timestamp_de_captura
              end
            end

            si Resultado.has_cursor_id? &&
              Conexión.Descripción.load_balancer?
            entonces
              si Resultado.cursor_id == 0
                Conexión.unpin
              else
                Conexión.alfiler
              end
            end
            process_result(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.¿habilitado?
    a menos que Conexión.is_a?(Mongo::Server::Conexión)
      propagar Error::LintError, "El argumento de conexión es del tipo incorrecto: #{connection}"
    end
  end

  do_execute(Conexión, context, opciones).tocar hacer |Resultado|
    validate_result(Resultado, Conexión, context)
  end
end