Clase: Mongo::Server::RoundTripTimeCalculator Privado
- Hereda:
-
Objeto
- Objeto
- Mongo::Servidor::Calculadora de tiempo de ida y vuelta
- Definido en:
- lib/mongo/servidor/round_trip_time_calculator.rb
Overview
Esta clase forma parte de una API privada. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.
Resumen de atributos de la instancia colapsar
- #average_round_trip_time ⇒ Objeto Solo lectura privado
- #last_round_trip_time ⇒ Objeto Solo lectura privado
- #tiempo_mínimo_de_ida_y_vuelta ⇒ Objeto Solo lectura privado
Resumen del método de instancia colapsar
-
#initialize ⇒ RoundTripTimeCalculator
constructor
privado
Una nueva instancia de RoundTripTimeCalculator.
- #measure ⇒ objeto privado
- #actualizar_tiempo_promedio_de_ida_y_vuelta ⇒ Objeto privado
- #update_minimum_round_trip_time ⇒ objeto privado
Detalles del constructor
#inicializar ⇒ Calculadora de tiempo de ida y vuelta
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve una nueva instancia de RoundTripTimeCalculator.
34 35 36 37 38 39 40 |
# Archivo 'lib/mongo/server/round_trip_time_calculator.rb', línea 34 def inicializar @último_viaje_de_ida_y_vuelta = nulo @tiempo_promedio_de_viaje_de_ida_y_vuelta = nulo @minimum_round_trip_time = 0 @lock = Mutex (exclusión mutua).Nuevo @rtts = [] end |
Detalles de los atributos de instancia
#tiempo_promedio_de_ida_y_vuelta ⇒ Objeto (solo lectura)
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
43 44 45 |
# Archivo 'lib/mongo/server/round_trip_time_calculator.rb', línea 43 def average_round_trip_time @tiempo_promedio_de_viaje_de_ida_y_vuelta end |
#last_round_trip_time ⇒ Object (solo lectura)
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
42 43 44 |
# Archivo 'lib/mongo/server/round_trip_time_calculator.rb', línea 42 def tiempo del último viaje de ida y vuelta @último_viaje_de_ida_y_vuelta end |
#minimum_round_trip_time ⇒ Object (solo lectura)
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
44 45 46 |
# Archivo 'lib/mongo/server/round_trip_time_calculator.rb', línea 44 def tiempo mínimo de ida y vuelta @minimum_round_trip_time end |
Detalles del método de instancia
#measure ⇒ objeto
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
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 |
# Archivo 'lib/mongo/server/round_trip_time_calculator.rb', línea 46 def medir Inicio = Utils.monotonic_time begin rv = rendimiento rescate Error::Error de socket, Error::SocketTimeoutError # Si encontramos un error de red, el viaje de ida y vuelta no es # completo y, por tanto, el RTT para ello no tiene sentido. propagar rescate Error, Error::AuthError => Excª # Para otros errores, RTT es válido. end last_rtt = Utils.monotonic_time - Inicio # Si el saludo falla, necesitamos devolver el tiempo de ida y vuelta más reciente # porque se utiliza en el evento de latido fallido de SDAM, # pero no debemos actualizar el tiempo de ida y vuelta registrado en el servidor. a menos que Excª @último_viaje_de_ida_y_vuelta = last_rtt @lock.sincronizar hacer update_average_round_trip_time update_minimum_round_trip_time end end si Excª propagar Excª else rv end end |
#actualizar_tiempo_promedio_de_ida_y_vuelta ⇒ Objeto
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
77 78 79 80 81 82 83 |
# Archivo 'lib/mongo/server/round_trip_time_calculator.rb', línea 77 def update_average_round_trip_time @tiempo_promedio_de_viaje_de_ida_y_vuelta = si average_round_trip_time RTT_WEIGHT_FACTOR * tiempo del último viaje de ida y vuelta + (1 - RTT_WEIGHT_FACTOR) * average_round_trip_time else tiempo del último viaje de ida y vuelta end end |
#update_minimum_round_trip_time ⇒ objeto
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
85 86 87 88 89 90 91 |
# Archivo 'lib/mongo/server/round_trip_time_calculator.rb', línea 85 def update_minimum_round_trip_time @rtts.push(tiempo del último viaje de ida y vuelta) a menos que tiempo del último viaje de ida y vuelta.nil? @minimum_round_trip_time = 0 y return si @rtts.tamaño < MIN_SAMPLES @rtts.turno si @rtts.tamaño > MUESTRAS RTT PARA UN MÍNIMO @minimum_round_trip_time = @rtts.compact.min end |