Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 // | 4 // |
| 5 // QuicTime represents one point in time, stored in microsecond resolution. | 5 // QuicTime represents one point in time, stored in microsecond resolution. |
| 6 // QuicTime is monotonically increasing, even across system clock adjustments. | 6 // QuicTime is monotonically increasing, even across system clock adjustments. |
| 7 // The epoch (time 0) of QuicTime is unspecified. | 7 // The epoch (time 0) of QuicTime is unspecified. |
| 8 // | 8 // |
| 9 // This implementation wraps the classes base::TimeTicks and base::TimeDelta. | 9 // This implementation wraps the classes base::TimeTicks and base::TimeDelta. |
| 10 | 10 |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 152 friend inline bool operator==(QuicTime lhs, QuicTime rhs); | 152 friend inline bool operator==(QuicTime lhs, QuicTime rhs); |
| 153 friend inline bool operator<(QuicTime lhs, QuicTime rhs); | 153 friend inline bool operator<(QuicTime lhs, QuicTime rhs); |
| 154 friend class QuicClock; | 154 friend class QuicClock; |
| 155 friend class QuicClockTest; | 155 friend class QuicClockTest; |
| 156 | 156 |
| 157 explicit QUICTIME_CONSTEXPR QuicTime(int64 time) : time_(time) {} | 157 explicit QUICTIME_CONSTEXPR QuicTime(int64 time) : time_(time) {} |
| 158 | 158 |
| 159 int64 time_; | 159 int64 time_; |
| 160 }; | 160 }; |
| 161 | 161 |
| 162 // A QuicWallTime represents an absolute time that is globally consistent. It | 162 // A QuicWallTime represents an absolute time that is globally consistent. In |
| 163 // provides, at most, one second granularity and, in practice, clock-skew means | 163 // practice, clock-skew means that comparing values from different machines |
| 164 // that you shouldn't even depend on that. | 164 // requires some flex |
|
ramant (doing other things)
2015/11/03 00:33:10
overly nit: period at the end of sentence.
Ryan Hamilton
2015/11/04 04:10:11
Done.
| |
| 165 class NET_EXPORT_PRIVATE QuicWallTime { | 165 class NET_EXPORT_PRIVATE QuicWallTime { |
| 166 public: | 166 public: |
| 167 // FromUNIXSeconds constructs a QuicWallTime from a count of the seconds | 167 // FromUNIXSeconds constructs a QuicWallTime from a count of the seconds |
| 168 // since the UNIX epoch. | 168 // since the UNIX epoch. |
| 169 static QUICTIME_CONSTEXPR QuicWallTime FromUNIXSeconds(uint64 seconds) { | 169 static QUICTIME_CONSTEXPR QuicWallTime FromUNIXSeconds(uint64 seconds) { |
| 170 return QuicWallTime(seconds); | 170 return QuicWallTime(seconds * 1000000); |
| 171 } | |
| 172 | |
| 173 static QUICTIME_CONSTEXPR QuicWallTime FromUNIXMicroseconds( | |
| 174 uint64 microseconds) { | |
| 175 return QuicWallTime(microseconds); | |
| 171 } | 176 } |
| 172 | 177 |
| 173 // Zero returns a QuicWallTime set to zero. IsZero will return true for this | 178 // Zero returns a QuicWallTime set to zero. IsZero will return true for this |
| 174 // value. | 179 // value. |
| 175 static QUICTIME_CONSTEXPR QuicWallTime Zero() { return QuicWallTime(0); } | 180 static QUICTIME_CONSTEXPR QuicWallTime Zero() { return QuicWallTime(0); } |
| 176 | 181 |
| 177 // ToUNIXSeconds converts a QuicWallTime into a count of seconds since the | 182 // Returns the number of seconds since the UNIX epoch. |
| 178 // UNIX epoch. | |
| 179 uint64 ToUNIXSeconds() const; | 183 uint64 ToUNIXSeconds() const; |
| 184 // Returns the number of microseconds since the UNIX epoch. | |
| 185 uint64 ToUNIXMicroseconds() const; | |
| 180 | 186 |
| 181 bool IsAfter(QuicWallTime other) const; | 187 bool IsAfter(QuicWallTime other) const; |
| 182 bool IsBefore(QuicWallTime other) const; | 188 bool IsBefore(QuicWallTime other) const; |
| 183 | 189 |
| 184 // IsZero returns true if this object is the result of calling |Zero|. | 190 // IsZero returns true if this object is the result of calling |Zero|. |
| 185 bool IsZero() const; | 191 bool IsZero() const; |
| 186 | 192 |
| 187 // AbsoluteDifference returns the absolute value of the time difference | 193 // AbsoluteDifference returns the absolute value of the time difference |
| 188 // between |this| and |other|. | 194 // between |this| and |other|. |
| 189 QuicTime::Delta AbsoluteDifference(QuicWallTime other) const; | 195 QuicTime::Delta AbsoluteDifference(QuicWallTime other) const; |
| 190 | 196 |
| 191 // Add returns a new QuicWallTime that represents the time of |this| plus | 197 // Add returns a new QuicWallTime that represents the time of |this| plus |
| 192 // |delta|. | 198 // |delta|. |
| 193 QuicWallTime Add(QuicTime::Delta delta) const WARN_UNUSED_RESULT; | 199 QuicWallTime Add(QuicTime::Delta delta) const WARN_UNUSED_RESULT; |
| 194 | 200 |
| 195 // Subtract returns a new QuicWallTime that represents the time of |this| | 201 // Subtract returns a new QuicWallTime that represents the time of |this| |
| 196 // minus |delta|. | 202 // minus |delta|. |
| 197 QuicWallTime Subtract(QuicTime::Delta delta) const WARN_UNUSED_RESULT; | 203 QuicWallTime Subtract(QuicTime::Delta delta) const WARN_UNUSED_RESULT; |
| 198 | 204 |
| 199 private: | 205 private: |
| 200 explicit QUICTIME_CONSTEXPR QuicWallTime(uint64 seconds) | 206 explicit QUICTIME_CONSTEXPR QuicWallTime(uint64 microseconds) |
| 201 : seconds_(seconds) {} | 207 : microseconds_(microseconds) {} |
| 202 | 208 |
| 203 uint64 seconds_; | 209 uint64 microseconds_; |
| 204 }; | 210 }; |
| 205 | 211 |
| 206 // Non-member relational operators for QuicTime::Delta. | 212 // Non-member relational operators for QuicTime::Delta. |
| 207 inline bool operator==(QuicTime::Delta lhs, QuicTime::Delta rhs) { | 213 inline bool operator==(QuicTime::Delta lhs, QuicTime::Delta rhs) { |
| 208 return lhs.time_offset_ == rhs.time_offset_; | 214 return lhs.time_offset_ == rhs.time_offset_; |
| 209 } | 215 } |
| 210 inline bool operator!=(QuicTime::Delta lhs, QuicTime::Delta rhs) { | 216 inline bool operator!=(QuicTime::Delta lhs, QuicTime::Delta rhs) { |
| 211 return !(lhs == rhs); | 217 return !(lhs == rhs); |
| 212 } | 218 } |
| 213 inline bool operator<(QuicTime::Delta lhs, QuicTime::Delta rhs) { | 219 inline bool operator<(QuicTime::Delta lhs, QuicTime::Delta rhs) { |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 238 inline bool operator<=(QuicTime lhs, QuicTime rhs) { | 244 inline bool operator<=(QuicTime lhs, QuicTime rhs) { |
| 239 return !(rhs < lhs); | 245 return !(rhs < lhs); |
| 240 } | 246 } |
| 241 inline bool operator>=(QuicTime lhs, QuicTime rhs) { | 247 inline bool operator>=(QuicTime lhs, QuicTime rhs) { |
| 242 return !(lhs < rhs); | 248 return !(lhs < rhs); |
| 243 } | 249 } |
| 244 | 250 |
| 245 } // namespace net | 251 } // namespace net |
| 246 | 252 |
| 247 #endif // NET_QUIC_QUIC_TIME_H_ | 253 #endif // NET_QUIC_QUIC_TIME_H_ |
| OLD | NEW |