클래스: Mongo::Server::RoundTripTimeCalculator Private

상속:
객체
  • 객체
모두 표시
다음에 정의됨:
lib/ Mongo/ 서버/round_trip_time_calculator.rb

개요

이 클래스는 비공개 API의 일부입니다. 이 클래스는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0

인스턴스 속성 요약 접기

인스턴스 메서드 요약 접기

생성자 세부 정보

#initializeRoundTripTimeCalculator

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

RoundTripTimeCalculator의 새 인스턴스 반환합니다.

이후:

  • 2.0.0

[소스 보기]

34
35
36
37
38
39
40
# 파일 'lib/ Mongo/ 서버/round_trip_time_calculator.rb', 줄 34

def 초기화
  @last_round_trip_time = nil
  @average_round_trip_time = nil
  @minimum_round_trip_time = 0
  @ 락 = 뮤텍스.신규
  @rtts = []
end

인스턴스 속성 세부 정보

#average_round_trip_time객체 (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0


43
44
45
# 파일 'lib/ Mongo/ 서버/round_trip_time_calculator.rb', 줄 43

def 평균 왕복 시간
  @average_round_trip_time
end

#last_round_trip_time객체 (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0


42
43
44
# 파일 'lib/ Mongo/ 서버/round_trip_time_calculator.rb', 줄 42

def last_round_trip_time
  @last_round_trip_time
end

#minimum_round_trip_time 객체(읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0


44
45
46
# 파일 'lib/ Mongo/ 서버/round_trip_time_calculator.rb', 줄 44

def minimum_round_trip_time
  @minimum_round_trip_time
end

인스턴스 메서드 세부 정보

#측정값객체

이 메서드는 비공개 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
# 파일 'lib/ Mongo/ 서버/round_trip_time_calculator.rb', 줄 46

def 측정
  시작하기 = Utils.단조적 시간
  시작
    rv = yield
  구출 오류::SocketError, 오류::SocketTimeoutError
    # 네트워크 오류가 발생하면 왕복이
    # 완전하므로 이에 대한 RTT는 의미가 없습니다.
    올리다
  구출 오류, 오류::AuthError => exc
    # 다른 오류의 경우 RTT가 유효합니다.
  end
  last_rtt = Utils.단조적 시간 - 시작하기

  # hello가 실패하면 마지막 왕복 시간을 반환해야 합니다.
  # 이는 하트비트 실패 SDAM 이벤트 에 사용되기 때문입니다.
  하지만 서버에 기록된 왕복 시간을 업데이트해서는 안 됩니다.
  하지 않는 한 exc
    @last_round_trip_time = last_rtt
    @ 락.동기화 do
      update_average_round_trip_time
      update_minimum_round_trip_time
    end
  end

  만약 exc
    올리다 exc
  other
    rv
  end
end

#update_average_round_trip_time객체

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0

[소스 보기]

77
78
79
80
81
82
83
# 파일 'lib/ Mongo/ 서버/round_trip_time_calculator.rb', 줄 77

def update_average_round_trip_time
  @average_round_trip_time = 만약 평균 왕복 시간
    RTT_WEIGHT_FACTOR * last_round_trip_time + (1 - RTT_WEIGHT_FACTOR) * 평균 왕복 시간
  other
    last_round_trip_time
  end
end

#update_minimum_round_trip_time객체

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0

[소스 보기]

85
86
87
88
89
90
91
# 파일 'lib/ Mongo/ 서버/round_trip_time_calculator.rb', 줄 85

def update_minimum_round_trip_time
  @rtts.push(last_round_trip_time) 하지 않는 한 last_round_trip_time.nil?
  @minimum_round_trip_time = 0 개인정보 정책에 반환 만약 @rtts.size < MIN_SAMPLES

  @rtts.shift 만약 @rtts.size > RTT_SAMPLES_FOR_MINIMUM
  @minimum_round_trip_time = @rtts.컴팩트.min
end