Módulo: Mongo::Operação::Executable Private

Inclui:
ResponseHandling
Incluído em:
OpMsgBase
Definido em:
lib/mongo/operation/shared/executable.rb

Visão geral

Este módulo faz parte de uma API privada. Você deve evitar usar este módulo, se possível, pois ele pode ser removido ou alterado no futuro.

Comportamento executável compartilhado de operações.

Desde:

  • 2.5.2

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Detalhes do atributo da instância

#contextOperation::Context | nil

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna o contexto da operação usado para executar esta operação.

Retorna:

  • (Operação::Contexto | nil)

    o contexto da operação utilizado para executar esta operação.

Desde:

  • 2.5.2



33
34
35
# Arquivo 'lib/mongo/operation/shared/executable.rb', linha 33

def Contexto
  @context
end

Detalhes do método de instância

#do_execute(connection, context, options = {}) ➤ Object

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no 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
# Arquivo 'lib/mongo/operation/shared/executable.rb', linha 35

def do_execute(Conexão, Contexto, opções = {})
  # Salve o contexto na instância, para evitar ter que passá-lo como um
  # parâmetro para cada método. Existem muitos métodos legado que
  # ainda o aceitam como um parâmetro, que são deixados como estão por enquanto para
  # minimizar o impacto desta alteração. No futuro, pode ser
  # razoável refatorar as coisas para que essa referência salva seja usada.
  @context = Contexto

  session&.materialize_if_needed
  unpin_ maybe(session, Conexão) fazer
    add_error_labels(Conexão, Contexto) fazer
      check_for_network_error fazer
        add_server_diagnóstico(Conexão) fazer
          get_result(Conexão, Contexto, opções).toque fazer |Resultado|
            se session
              se session.in_transaction? &&
                Conexão.Descrição.load_balancer?
              então
                se session.pinned_connection_global_id
                  a menos que session.pinned_connection_global_id == Conexão.global_id
                    aumentar(
                      Erro::InternalDriverError,
                      "A operação esperada para usar a conexão #{session.pinned_connection_global_id} mas usou #{connection.global_id}"
                    )
                  end
                mais
                  session.pin_to_connection(Conexão.global_id)
                  Conexão.pin
                end
              end

              se session.snapshot? && !session.snapshot_timestamp
                session.snapshot_timestamp = Resultado.snapshot_timestamp
              end
            end

            se Resultado.has_cursor_id? &&
              Conexão.Descrição.load_balancer?
            então
              se Resultado.cursor_id == 0
                Conexão.desafixar
              mais
                Conexão.pin
              end
            end
            process_result(Resultado, Conexão)
          end
        end
      end
    end
  end
end

#execute(connection, context:, options: {}) ➤ Object

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Desde:

  • 2.5.2



88
89
90
91
92
93
94
95
96
97
98
# Arquivo 'lib/mongo/operation/shared/executable.rb', linha 88

def executar, executar(Conexão, contexto:, opções: {})
  se Lint.habilitado?
    a menos que Conexão.is_a?(mongo::Servidor::Conexão)
      aumentar Erro::LintError, "O argumento de conexão é do tipo errado: #{connection}"
    end
  end

  do_execute(Conexão, Contexto, opções).toque fazer |Resultado|
    validate_result(Resultado, Conexão, Contexto)
  end
end