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



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

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



43
44
45
# Arquivo 'lib/mongo/ servidor/round_trip_time_calculator.rb', linha 43

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



42
43
44
# Arquivo 'lib/mongo/ servidor/round_trip_time_calculator.rb', linha 42

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



44
45
46
# Arquivo 'lib/mongo/ servidor/round_trip_time_calculator.rb', linha 44

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



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

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 => exc
    # 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 exc
    @last_round_trip_time = last_rtt
    @ bloqueio.sincronizar fazer
      update_average_round_trip_time
      update_minimum_round_trip_time
    end
  end

  se exc
    aumentar exc
  mais
    rv
  end
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



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

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



85
86
87
88
89
90
91
# Arquivo 'lib/mongo/ servidor/round_trip_time_calculator.rb', linha 85

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