1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-11-22 16:02:34 +03:00

Untemplatize updateLargestReceivedPacketNum

Summary:
As in title. We never use the clock template.

(Note: this ignores all push blocking failures!)

Reviewed By: hanidamlaj

Differential Revision: D41626894

fbshipit-source-id: d0c5ce923ffae09d07c04dc9aae2aea09f730b8f
This commit is contained in:
Matt Joras
2022-12-20 11:08:43 -08:00
committed by Facebook GitHub Bot
parent 7fbf860609
commit 1a41bc78cf
2 changed files with 35 additions and 31 deletions

View File

@@ -366,4 +366,38 @@ uint64_t maximumConnectionIdsToIssue(const QuicConnectionStateBase& conn) {
return maximumIdsToIssue;
}
uint64_t updateLargestReceivedPacketNum(
AckState& ackState,
PacketNum packetNum,
TimePoint receivedTime) {
PacketNum expectedNextPacket = 0;
if (ackState.largestRecvdPacketNum) {
expectedNextPacket = *ackState.largestRecvdPacketNum + 1;
}
ackState.largestRecvdPacketNum = std::max<PacketNum>(
ackState.largestRecvdPacketNum.value_or(packetNum), packetNum);
ackState.acks.insert(packetNum);
if (ackState.largestRecvdPacketNum == packetNum) {
ackState.largestRecvdPacketTime = receivedTime;
}
static_assert(Clock::is_steady, "Needs steady clock");
ackState.lastRecvdPacketInfo.assign({packetNum, receivedTime});
if (packetNum >= expectedNextPacket) {
if (ackState.recvdPacketInfos.size() == kMaxReceivedPktsTimestampsStored) {
ackState.recvdPacketInfos.pop_front();
}
ackState.recvdPacketInfos.emplace_back(
RecvdPacketInfo{packetNum, receivedTime});
}
if (expectedNextPacket) {
return (packetNum > expectedNextPacket) ? packetNum - expectedNextPacket
: expectedNextPacket - packetNum;
} else {
return 0;
}
}
} // namespace quic