1
0
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:
Yang Chi
2020-07-31 23:03:37 -07:00
committed by Facebook GitHub Bot
parent 9151f3dc92
commit 93c94e0ea5
4 changed files with 15 additions and 14 deletions

View File

@@ -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);
} }

View File

@@ -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());

View File

@@ -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();

View File

@@ -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