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

Inclui:
ResponseHandling
Incluído em:
OpMsgBase
Definido em:
build/ruby-driver-v2.19/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 método de instância

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



29
30
31
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
# File 'build/ruby-driver-v2.19/lib/mongo/operation/shared/executable.rb', linha 29

def do_execute(Conexão, Contexto, opções = {})
  session&.materialize_if_needed
  unpin_ maybe(session, Conexão) fazer
    add_error_labels(Conexão, Contexto) 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

#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



73
74
75
76
77
78
79
80
81
82
83
# File 'build/ruby-driver-v2.19/lib/mongo/operation/shared/executable.rb', linha 73

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