Classe: Mongo::Server::RoundTripTimeCalculator Private

Herda:
Objeto
  • Objeto
mostrar tudo
Definido em:
lib/mongo/ servidor/round_trip_time_calculator.rb

Visão geral

Esta classe faz parte de uma API privada. Evite usar essa classe, se possível, pois ela pode ser removida ou alterada no futuro.

Desde:

  • 2.0.0

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Detalhes do construtor

.

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 uma nova instância de RollTripTimeCalculator.

Desde:

  • 2.0.0



32
33
34
35
36
37
38
# Arquivo 'lib/mongo/ servidor/round_trip_time_calculator.rb', linha 32

def inicializar
  @last_round_trip_time = nada
  @average_round_trip_time = nada
  @minimum_round_trip_time = 0
  @ bloqueio = Mutex.Novo
  @rtts = []
end

Detalhes do atributo da instância

#average_round_trip_time ➤ Objeto (somente leitura)

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.0.0



40
41
42
# Arquivo 'lib/mongo/ servidor/round_trip_time_calculator.rb', linha 40

def average_round_trip_time
  @average_round_trip_time
end

#last_round_trip_time ➤ Object (somente leitura)

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.0.0



40
41
42
# Arquivo 'lib/mongo/ servidor/round_trip_time_calculator.rb', linha 40

def last_round_trip_time
  @last_round_trip_time
end

#minimum_round_trip_timeObjeto (somente leitura)

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.0.0



40
41
42
# Arquivo 'lib/mongo/ servidor/round_trip_time_calculator.rb', linha 40

def minimum_round_trip_time
  @minimum_round_trip_time
end

Detalhes do método de instância

#medidaObjeto

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.0.0



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
# Arquivo 'lib/mongo/ servidor/round_trip_time_calculator.rb', linha 42

def medir
  iniciar = Utilidades.monotonic_time
  começar
    rv = rendimento
  salvar Erro::Erro de soquete, Erro::SocketTimeoutError
    # Se encontrarmos um erro de rede, a viagem de ida e volta não será
    # completo e, portanto, RTT, pois não faz sentido.
    aumentar
  salvar Erro, Erro::AuthError => e
    # Para outros erros, o RTT é válido.
  end
  last_rtt = Utilidades.monotonic_time - iniciar

  # Se hello falhar, precisamos retornar o último tempo de viagem de ida e volta
  # porque é usado no evento SDAM com falha de pulsação,
  # mas não devemos atualizar o tempo de ida e volta registrado no servidor.
  a menos que e
    @last_round_trip_time = last_rtt
    @ bloqueio.sincronizar fazer
      update_average_round_trip_time
      update_minimum_round_trip_time
    end
  end

  aumentar e se e

  rv
end

#update_average_round_trigger_timeObjeto

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.0.0



71
72
73
74
75
76
77
# Arquivo 'lib/mongo/ servidor/round_trip_time_calculator.rb', linha 71

def update_average_round_trip_time
  @average_round_trip_time = se average_round_trip_time
                               (RTT_WEight_FACTOR * last_round_trip_time) + ((1 - RTT_WEight_FACTOR) * average_round_trip_time)
                             mais
                               last_round_trip_time
                             end
end

#update_minimum_round_trip_timeObjeto

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.0.0



79
80
81
82
83
84
85
# Arquivo 'lib/mongo/ servidor/round_trip_time_calculator.rb', linha 79

def update_minimum_round_trip_time
  @rtts.push(last_round_trip_time) a menos que last_round_trip_time.nada?
  @minimum_round_trip_time = 0 e a Método se @rtts.Tamanho < MIN_SAMPLES

  @rtts.mudança se @rtts.Tamanho > RTT_SAMPLES_FOR_MINUM
  @minimum_round_trip_time = @rtts.compactar.min
end