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 <folly/Chrono.h>
#include <folly/ScopeGuard.h>
#include <quic/api/LoopDetectorCallback.h>
#include <quic/api/QuicTransportFunctions.h>
@@ -448,7 +449,7 @@ void QuicTransportBase::closeImpl(
DCHECK(!drainTimeout_.isScheduled());
getEventBase()->timer().scheduleTimeout(
&drainTimeout_,
std::chrono::duration_cast<std::chrono::milliseconds>(
folly::chrono::ceil<std::chrono::milliseconds>(
kDrainFactor * calculatePTO(*conn_)));
} else {
drainTimeoutExpired();
@@ -2413,8 +2414,7 @@ void QuicTransportBase::scheduleAckTimeout() {
std::chrono::duration_cast<std::chrono::microseconds>(
wheelTimer.getTickInterval()),
timeMin(kMaxAckTimeout, factoredRtt));
auto timeoutMs =
std::chrono::duration_cast<std::chrono::milliseconds>(timeout);
auto timeoutMs = folly::chrono::ceil<std::chrono::milliseconds>(timeout);
VLOG(10) << __func__ << " timeout=" << timeoutMs.count() << "ms"
<< " factoredRtt=" << factoredRtt.count() << "us"
<< " " << *this;
@@ -2459,8 +2459,8 @@ void QuicTransportBase::schedulePathValidationTimeout() {
auto validationTimeout =
std::max(3 * pto, 6 * conn_->transportSettings.initialRtt);
auto timeoutMs = std::chrono::duration_cast<std::chrono::milliseconds>(
validationTimeout);
auto timeoutMs =
folly::chrono::ceil<std::chrono::milliseconds>(validationTimeout);
VLOG(10) << __func__ << " timeout=" << timeoutMs.count() << "ms " << *this;
getEventBase()->timer().scheduleTimeout(&pathValidationTimeout_, timeoutMs);
}

View File

@@ -11,6 +11,8 @@
#include <quic/logging/QLoggerConstants.h>
#include <quic/state/QuicStateFunctions.h>
#include <folly/Chrono.h>
namespace quic {
Cubic::Cubic(
@@ -174,11 +176,11 @@ void Cubic::setAppIdle(bool idle, TimePoint eventTime) noexcept {
cubic_appidle,
conn_,
idle,
std::chrono::duration_cast<std::chrono::milliseconds>(
folly::chrono::ceil<std::chrono::milliseconds>(
eventTime.time_since_epoch())
.count(),
steadyState_.lastReductionTime
? std::chrono::duration_cast<std::chrono::milliseconds>(
? folly::chrono::ceil<std::chrono::milliseconds>(
steadyState_.lastReductionTime->time_since_epoch())
.count()
: -1);
@@ -192,7 +194,7 @@ void Cubic::setAppIdle(bool idle, TimePoint eventTime) noexcept {
if (!idle && currentAppIdle && *quiescenceStart_ <= eventTime &&
steadyState_.lastReductionTime) {
*steadyState_.lastReductionTime +=
std::chrono::duration_cast<std::chrono::milliseconds>(
folly::chrono::ceil<std::chrono::milliseconds>(
eventTime - *quiescenceStart_);
}
if (!idle) {
@@ -261,7 +263,7 @@ int64_t Cubic::calculateCubicCwndDelta(TimePoint ackTime) noexcept {
LOG(WARNING) << "Cubic ackTime earlier than reduction time";
return 0;
}
auto timeElapsed = std::chrono::duration_cast<std::chrono::milliseconds>(
auto timeElapsed = folly::chrono::ceil<std::chrono::milliseconds>(
ackTime - *steadyState_.lastReductionTime);
int64_t delta = 0;
double timeElapsedCount = static_cast<double>(timeElapsed.count());

View File

@@ -18,6 +18,7 @@
#include <quic/state/SimpleFrameFunctions.h>
#include <quic/state/StateData.h>
#include <folly/Chrono.h>
#include <folly/Overload.h>
#include <folly/io/async/AsyncTimeout.h>
@@ -85,8 +86,7 @@ calculateAlarmDuration(const QuicConnectionStateBase& conn) {
// The alarm duration is calculated based on the last packet that was sent
// rather than the current time.
if (lastSentPacketTime + alarmDuration > now) {
adjustedAlarmDuration =
std::chrono::duration_cast<std::chrono::milliseconds>(
adjustedAlarmDuration = folly::chrono::ceil<std::chrono::milliseconds>(
lastSentPacketTime + alarmDuration - now);
} else {
auto lastSentPacketNum =

View File

@@ -1014,8 +1014,7 @@ TEST_F(QuicLossFunctionsTest, LossTimePreemptsCryptoTimer) {
MockClock::mockNow = [=]() { return sendTime; };
auto alarm = calculateAlarmDuration<MockClock>(*conn);
EXPECT_EQ(
std::chrono::duration_cast<std::chrono::milliseconds>(
expectedDelayUntilLost),
folly::chrono::ceil<std::chrono::milliseconds>(expectedDelayUntilLost),
alarm.first);
EXPECT_EQ(LossState::AlarmMethod::EarlyRetransmitOrReordering, alarm.second);
// Manual set lossState. Calling setLossDetectionAlarm requries a Timeout