类:Mongo::Server::RoundTripTimeCalculator Private
- 继承:
-
对象
- 对象
- Mongo::Server::RoundTripTimeCalculator
- 定义于:
- lib/ Mongo/ 服务器/round_trip_time_calculator.rb
Overview
此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。
实例属性摘要折叠
- # average_round_trip_time ⇒ 对象 只读 private
- # last_round_trip_time ⇒ 对象 只读 private
- # minimum_round_trip_time ⇒ 对象 只读 private
实例方法摘要折叠
-
# 初始化 ="RoundTripTimeCalculator"
构造函数
private
RoundTripTimeCalculator 的新实例。
- #measure ⇒ 对象 private
- # update_average_round_trip_time ⇒ 对象 private
- # update_minimum_round_trip_time ⇒ 对象 private
构造函数详情
# 初始化 ="RoundTripTimeCalculator"
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回 RoundTripTimeCalculator 的新实例。
34 35 36 37 38 39 40 |
# File 'lib/ Mongo/ 服务器/round_trip_time_calculator.rb', line 34 def 初始化 @last_round_trip_time = nil @average_round_trip_time = nil @minimum_round_trip_time = 0 锁 = 互斥锁.new @rtts = [] end |
实例属性详细信息
# average_round_trip_time ⇒对象(只读)
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
43 44 45 |
# File 'lib/ Mongo/ 服务器/round_trip_time_calculator.rb', line 43 def average_round_trip_time @average_round_trip_time end |
# last_round_trip_time ⇒对象(只读)
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
42 43 44 |
# File 'lib/ Mongo/ 服务器/round_trip_time_calculator.rb', line 42 def last_round_trip_time @last_round_trip_time end |
# minimum_round_trip_time ⇒ 对象(只读)
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
44 45 46 |
# File 'lib/ Mongo/ 服务器/round_trip_time_calculator.rb', line 44 def minimum_round_trip_time @minimum_round_trip_time end |
实例方法详细信息
#measure ⇒对象
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
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 |
# File 'lib/ Mongo/ 服务器/round_trip_time_calculator.rb', line 46 def 测量 开始 = Utils.monotic_time 开始 rv = 产量 救援 错误::SocketError, 错误::SocketTimeoutError # 如果遇到网络错误,则不会执行往返 # 完成,因此 RTT 对它来说没有意义。 提高 救援 错误, 错误::AuthError => 排除 # 对于其他错误,RTT 有效。 end last_rtt = Utils.monotic_time - 开始 # 如果 hello 失败,我们需要返回最后一次往返时间 # 因为它用于心跳失败的 SDAM事件, # 但是我们不能更新 server 中记录的往返时间。 除非 排除 @last_round_trip_time = last_rtt 锁.同步 do update_average_round_trip_time update_minimum_round_trip_time end end if 排除 提高 排除 else rv end end |
# update_average_round_trip_time ⇒ 对象
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
77 78 79 80 81 82 83 |
# File 'lib/ Mongo/ 服务器/round_trip_time_calculator.rb', line 77 def update_average_round_trip_time @average_round_trip_time = if average_round_trip_time RTT_WEIGHT_FACTOR * last_round_trip_time + (1 - RTT_WEIGHT_FACTOR) * average_round_trip_time else last_round_trip_time end end |
# update_minimum_round_trip_time ⇒ 对象
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
85 86 87 88 89 90 91 |
# File 'lib/ Mongo/ 服务器/round_trip_time_calculator.rb', line 85 def update_minimum_round_trip_time @rtts.推动(last_round_trip_time) 除非 last_round_trip_time.nil? @minimum_round_trip_time = 0 和 return if @rtts.size < MIN_SAMPLES @rtts.转变 if @rtts.size > RTT_SAMPLES_FOR_MINIMUM @minimum_round_trip_time = @rtts.compact.min end |