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.
Recolhimento do Resumo do atributo de instância
-
#context ⇒ Operation::Context | nil
privado
O contexto da operação usado para executar esta operação.
Recolhimento do Resumo do método de instância
- #do_execute(connection, context, options = {}) ➤ Object privado
- #execute(connection, context:, options: {}) ➤ Object privado
Detalhes do atributo da instância
#context ⇒ Operation::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.
30 31 32 |
# Arquivo 'lib/mongo/operation/shared/executable.rb', linha 30 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.
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 |
# Arquivo 'lib/mongo/operation/shared/executable.rb', linha 32 def do_execute(Conexão, Contexto, = {}) # 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, ) fazer |Resultado| se session se session.in_transaction? && Conexão.Descrição.load_balancer? 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 elsif !session.commit_transaction? && !session.aborting_transaction? session.pin_to_connection(Conexão.global_id, conexão: Conexão) Conexão.pin(:transaction) end end se session.snapshot? && !session. session. = Resultado. end end se Resultado.has_cursor_id? && Conexão.Descrição.load_balancer? 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.
83 84 85 86 87 88 89 90 91 |
# Arquivo 'lib/mongo/operation/shared/executable.rb', linha 83 def executar, executar(Conexão, contexto:, opções: {}) se Lint.habilitado? && !Conexão.is_a?(mongo::Servidor::Conexão) aumentar Erro::LintError, "O argumento de conexão é do tipo errado: #{connection}" end do_execute(Conexão, Contexto, ).toque fazer |Resultado| validate_result(Resultado, Conexão, Contexto) end end |