Módulo: Mongo::Operação::Timed privado

Incluído em:
OpMsgBase
Definido em:
lib/mongo/operation/shared/timed.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.

Define o comportamento das operações que têm o comportamento de tempo limite padrão descrito pela especificação de tempos limite de operação (CSOT) do lado do cliente .

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#apply_relevante_timeouts_to(spec, connection) ➤ Hash

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.

Se um tempo limite estiver ativo (conforme definido pelo contexto atual) e ainda não tiver expirado, adicione :maxTimeMS à especificação.

Parâmetros:

  • especificações (Hash)

    A especificação a ser modificada

  • Conexão (Conexão)

    A conexão que será utilizada para executar a operação

Retorna:

  • (Hash)

    a especificação



22
23
24
25
26
27
28
29
# Arquivo 'lib/mongo/operation/shared/timed.rb', linha 22

def apply_relevante_timeouts_to(especificações, Conexão)
  with_max_time(Conexão) fazer |max_time_sec|
    Método especificações se max_time_sec.nada?
    Método especificações se Conexão.Descrição.mongocryptd?

    especificações.toque { especificações[:maxTimeMS] = (max_time_sec * 1_000).to_i }
  end
end

#with_max_time(connection) ➤ Hash

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.

Um método assistente que calcula o tempo limite restante (em segundos) e o produz para o bloco associado. Se nenhum tempo limite estiver presente, produz zero. Se o tempo limite tiver expirado, gera Mongo::Error::TimeoutError.

Parâmetros:

  • Conexão (Conexão)

    A conexão que será utilizada para executar a operação

Retorna:

  • (Hash)

    o resultado de ceder ao bloco (que deve ser um Hash)



40
41
42
43
44
45
46
47
48
49
# Arquivo 'lib/mongo/operation/shared/timed.rb', linha 40

def with_max_time(Conexão)
  se Contexto&.tempo-limite?
    max_time_sec = Contexto.remaining_timeout_sec - Conexão.Servidor.minimum_round_trip_time
    aumentar mongo::Erro::Erro de tempo limite se max_time_sec <= 0

    rendimento max_time_sec
  mais
    rendimento nada
  end
end