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

Incluye:
ResponseHandling
Incluido en:
OpMsgBase
Definido en:
lib/mongo/operation/shared/executable.rb

Overview

Este módulo es parte de una API privada. Deberías evitar usar este módulo si es posible, ya que puede ser removido o cambiado en el futuro.

Comportamiento ejecutable compartido de las operaciones.

Desde:

  • 2.5.2

Resumen de atributos de la instancia colapsar

Resumen del método de instancia colapsar

Detalles de atributo de instancias

#contextOperation::Context | nil

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

Devuelve:

  • (Operación::Contexto | nil)

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

Desde:

  • 2.5.2



30
31
32
# Archivo 'lib/mongo/operation/shared/executable.rb', línea 30

def context
  @contexto
end

Detalles del método de instancia

#do_execute(connection, context, options = {}) ⇒ 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.

Desde:

  • 2.5.2



32
33
34
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
# Archivo 'lib/mongo/operation/shared/executable.rb', línea 32

def do_execute(Conexión, context, opciones = {})
  # Guarde el contexto en la instancia para evitar tener que pasarla como
  # parámetro para cada método individual. Existen muchos métodos heredados que
  # todavía lo aceptan como parámetro, que por ahora se dejan como están para
  # 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) hacer |Resultado|
            si sesión
              si sesión.en_transacción? &&
                 Conexión.Descripción.load_balancer?
                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
                elsif !sesión.guardando_transacción? && !sesión.aborting_transaction?
                  sesión.pin_to_connection(Conexión.global_id, conexión: Conexión)
                  Conexión.alfiler(transacción)
                end
              end

              si sesión.snapshot? && !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?
              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 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.

Desde:

  • 2.5.2



83
84
85
86
87
88
89
90
91
# Archivo 'lib/mongo/operation/shared/executable.rb', línea 83

def ejecutar(Conexión, context:, opciones: {})
  si Lint.¿habilitado? && !Conexión.is_a?(mongo::Server::Conexión)
    propagar Error::LintError, "El argumento de conexión es del tipo incorrecto: #{connection}"
  end

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