mirror of
https://github.com/facebookincubator/mvfst.git
synced 2025-11-10 21:22:20 +03:00
Replace std::chrono::duration_cast<milliseconds> with folly::chrono::ceil in
Summary: duration_cast round towards zero. The diff uses folly::chrono::ceil rather than std::chrono::ceil since we still need to compile with c++14 Differential Revision: D22870632 fbshipit-source-id: 18439488e879164807b1676a0105073348800412
This commit is contained in:
committed by
Facebook GitHub Bot
parent
9151f3dc92
commit
93c94e0ea5
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#include <quic/api/QuicTransportBase.h>
|
#include <quic/api/QuicTransportBase.h>
|
||||||
|
|
||||||
|
#include <folly/Chrono.h>
|
||||||
#include <folly/ScopeGuard.h>
|
#include <folly/ScopeGuard.h>
|
||||||
#include <quic/api/LoopDetectorCallback.h>
|
#include <quic/api/LoopDetectorCallback.h>
|
||||||
#include <quic/api/QuicTransportFunctions.h>
|
#include <quic/api/QuicTransportFunctions.h>
|
||||||
@@ -448,7 +449,7 @@ void QuicTransportBase::closeImpl(
|
|||||||
DCHECK(!drainTimeout_.isScheduled());
|
DCHECK(!drainTimeout_.isScheduled());
|
||||||
getEventBase()->timer().scheduleTimeout(
|
getEventBase()->timer().scheduleTimeout(
|
||||||
&drainTimeout_,
|
&drainTimeout_,
|
||||||
std::chrono::duration_cast<std::chrono::milliseconds>(
|
folly::chrono::ceil<std::chrono::milliseconds>(
|
||||||
kDrainFactor * calculatePTO(*conn_)));
|
kDrainFactor * calculatePTO(*conn_)));
|
||||||
} else {
|
} else {
|
||||||
drainTimeoutExpired();
|
drainTimeoutExpired();
|
||||||
@@ -2413,8 +2414,7 @@ void QuicTransportBase::scheduleAckTimeout() {
|
|||||||
std::chrono::duration_cast<std::chrono::microseconds>(
|
std::chrono::duration_cast<std::chrono::microseconds>(
|
||||||
wheelTimer.getTickInterval()),
|
wheelTimer.getTickInterval()),
|
||||||
timeMin(kMaxAckTimeout, factoredRtt));
|
timeMin(kMaxAckTimeout, factoredRtt));
|
||||||
auto timeoutMs =
|
auto timeoutMs = folly::chrono::ceil<std::chrono::milliseconds>(timeout);
|
||||||
std::chrono::duration_cast<std::chrono::milliseconds>(timeout);
|
|
||||||
VLOG(10) << __func__ << " timeout=" << timeoutMs.count() << "ms"
|
VLOG(10) << __func__ << " timeout=" << timeoutMs.count() << "ms"
|
||||||
<< " factoredRtt=" << factoredRtt.count() << "us"
|
<< " factoredRtt=" << factoredRtt.count() << "us"
|
||||||
<< " " << *this;
|
<< " " << *this;
|
||||||
@@ -2459,8 +2459,8 @@ void QuicTransportBase::schedulePathValidationTimeout() {
|
|||||||
|
|
||||||
auto validationTimeout =
|
auto validationTimeout =
|
||||||
std::max(3 * pto, 6 * conn_->transportSettings.initialRtt);
|
std::max(3 * pto, 6 * conn_->transportSettings.initialRtt);
|
||||||
auto timeoutMs = std::chrono::duration_cast<std::chrono::milliseconds>(
|
auto timeoutMs =
|
||||||
validationTimeout);
|
folly::chrono::ceil<std::chrono::milliseconds>(validationTimeout);
|
||||||
VLOG(10) << __func__ << " timeout=" << timeoutMs.count() << "ms " << *this;
|
VLOG(10) << __func__ << " timeout=" << timeoutMs.count() << "ms " << *this;
|
||||||
getEventBase()->timer().scheduleTimeout(&pathValidationTimeout_, timeoutMs);
|
getEventBase()->timer().scheduleTimeout(&pathValidationTimeout_, timeoutMs);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,8 @@
|
|||||||
#include <quic/logging/QLoggerConstants.h>
|
#include <quic/logging/QLoggerConstants.h>
|
||||||
#include <quic/state/QuicStateFunctions.h>
|
#include <quic/state/QuicStateFunctions.h>
|
||||||
|
|
||||||
|
#include <folly/Chrono.h>
|
||||||
|
|
||||||
namespace quic {
|
namespace quic {
|
||||||
|
|
||||||
Cubic::Cubic(
|
Cubic::Cubic(
|
||||||
@@ -174,11 +176,11 @@ void Cubic::setAppIdle(bool idle, TimePoint eventTime) noexcept {
|
|||||||
cubic_appidle,
|
cubic_appidle,
|
||||||
conn_,
|
conn_,
|
||||||
idle,
|
idle,
|
||||||
std::chrono::duration_cast<std::chrono::milliseconds>(
|
folly::chrono::ceil<std::chrono::milliseconds>(
|
||||||
eventTime.time_since_epoch())
|
eventTime.time_since_epoch())
|
||||||
.count(),
|
.count(),
|
||||||
steadyState_.lastReductionTime
|
steadyState_.lastReductionTime
|
||||||
? std::chrono::duration_cast<std::chrono::milliseconds>(
|
? folly::chrono::ceil<std::chrono::milliseconds>(
|
||||||
steadyState_.lastReductionTime->time_since_epoch())
|
steadyState_.lastReductionTime->time_since_epoch())
|
||||||
.count()
|
.count()
|
||||||
: -1);
|
: -1);
|
||||||
@@ -192,7 +194,7 @@ void Cubic::setAppIdle(bool idle, TimePoint eventTime) noexcept {
|
|||||||
if (!idle && currentAppIdle && *quiescenceStart_ <= eventTime &&
|
if (!idle && currentAppIdle && *quiescenceStart_ <= eventTime &&
|
||||||
steadyState_.lastReductionTime) {
|
steadyState_.lastReductionTime) {
|
||||||
*steadyState_.lastReductionTime +=
|
*steadyState_.lastReductionTime +=
|
||||||
std::chrono::duration_cast<std::chrono::milliseconds>(
|
folly::chrono::ceil<std::chrono::milliseconds>(
|
||||||
eventTime - *quiescenceStart_);
|
eventTime - *quiescenceStart_);
|
||||||
}
|
}
|
||||||
if (!idle) {
|
if (!idle) {
|
||||||
@@ -261,7 +263,7 @@ int64_t Cubic::calculateCubicCwndDelta(TimePoint ackTime) noexcept {
|
|||||||
LOG(WARNING) << "Cubic ackTime earlier than reduction time";
|
LOG(WARNING) << "Cubic ackTime earlier than reduction time";
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
auto timeElapsed = std::chrono::duration_cast<std::chrono::milliseconds>(
|
auto timeElapsed = folly::chrono::ceil<std::chrono::milliseconds>(
|
||||||
ackTime - *steadyState_.lastReductionTime);
|
ackTime - *steadyState_.lastReductionTime);
|
||||||
int64_t delta = 0;
|
int64_t delta = 0;
|
||||||
double timeElapsedCount = static_cast<double>(timeElapsed.count());
|
double timeElapsedCount = static_cast<double>(timeElapsed.count());
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#include <quic/state/SimpleFrameFunctions.h>
|
#include <quic/state/SimpleFrameFunctions.h>
|
||||||
#include <quic/state/StateData.h>
|
#include <quic/state/StateData.h>
|
||||||
|
|
||||||
|
#include <folly/Chrono.h>
|
||||||
#include <folly/Overload.h>
|
#include <folly/Overload.h>
|
||||||
#include <folly/io/async/AsyncTimeout.h>
|
#include <folly/io/async/AsyncTimeout.h>
|
||||||
|
|
||||||
@@ -85,9 +86,8 @@ calculateAlarmDuration(const QuicConnectionStateBase& conn) {
|
|||||||
// The alarm duration is calculated based on the last packet that was sent
|
// The alarm duration is calculated based on the last packet that was sent
|
||||||
// rather than the current time.
|
// rather than the current time.
|
||||||
if (lastSentPacketTime + alarmDuration > now) {
|
if (lastSentPacketTime + alarmDuration > now) {
|
||||||
adjustedAlarmDuration =
|
adjustedAlarmDuration = folly::chrono::ceil<std::chrono::milliseconds>(
|
||||||
std::chrono::duration_cast<std::chrono::milliseconds>(
|
lastSentPacketTime + alarmDuration - now);
|
||||||
lastSentPacketTime + alarmDuration - now);
|
|
||||||
} else {
|
} else {
|
||||||
auto lastSentPacketNum =
|
auto lastSentPacketNum =
|
||||||
conn.outstandings.packets.back().packet.header.getPacketSequenceNum();
|
conn.outstandings.packets.back().packet.header.getPacketSequenceNum();
|
||||||
|
|||||||
@@ -1014,8 +1014,7 @@ TEST_F(QuicLossFunctionsTest, LossTimePreemptsCryptoTimer) {
|
|||||||
MockClock::mockNow = [=]() { return sendTime; };
|
MockClock::mockNow = [=]() { return sendTime; };
|
||||||
auto alarm = calculateAlarmDuration<MockClock>(*conn);
|
auto alarm = calculateAlarmDuration<MockClock>(*conn);
|
||||||
EXPECT_EQ(
|
EXPECT_EQ(
|
||||||
std::chrono::duration_cast<std::chrono::milliseconds>(
|
folly::chrono::ceil<std::chrono::milliseconds>(expectedDelayUntilLost),
|
||||||
expectedDelayUntilLost),
|
|
||||||
alarm.first);
|
alarm.first);
|
||||||
EXPECT_EQ(LossState::AlarmMethod::EarlyRetransmitOrReordering, alarm.second);
|
EXPECT_EQ(LossState::AlarmMethod::EarlyRetransmitOrReordering, alarm.second);
|
||||||
// Manual set lossState. Calling setLossDetectionAlarm requries a Timeout
|
// Manual set lossState. Calling setLossDetectionAlarm requries a Timeout
|
||||||
|
|||||||
Reference in New Issue
Block a user