类:Mongo::Server::RoundTripTimeCalculator Private

继承:
对象
  • 对象
显示全部
定义于:
lib/ Mongo/ 服务器/round_trip_time_calculator.rb

Overview

此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。

由于:

  • 2.0.0

实例属性摘要折叠

实例方法摘要折叠

构造函数详情

# 初始化 ="RoundTripTimeCalculator"

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回 RoundTripTimeCalculator 的新实例。

由于:

  • 2.0.0



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 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0



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 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0



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 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0



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 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 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
# 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 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0



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 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0



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