gfe-relnote: In QUIC, arm 1st PTO based on the earliest in flight packet sent time. Protected by gfe2_reloadable_flag_quic_arm_pto_with_earliest_sent_time.
PiperOrigin-RevId: 297905248
Change-Id: Ieacee74c6fcd9b83f44c57d4ddc73cb2007c4eac
diff --git a/quic/core/quic_unacked_packet_map.cc b/quic/core/quic_unacked_packet_map.cc
index c856353..efb8e65 100644
--- a/quic/core/quic_unacked_packet_map.cc
+++ b/quic/core/quic_unacked_packet_map.cc
@@ -477,6 +477,32 @@
return largest_sent_retransmittable_packets_[packet_number_space];
}
+const QuicTransmissionInfo*
+QuicUnackedPacketMap::GetFirstInFlightTransmissionInfo() const {
+ DCHECK(HasInFlightPackets());
+ for (auto it = unacked_packets_.begin(); it != unacked_packets_.end(); ++it) {
+ if (it->in_flight) {
+ return &(*it);
+ }
+ }
+ DCHECK(false);
+ return nullptr;
+}
+
+const QuicTransmissionInfo*
+QuicUnackedPacketMap::GetFirstInFlightTransmissionInfoOfSpace(
+ PacketNumberSpace packet_number_space) const {
+ // TODO(fayang): Optimize this part if arm 1st PTO with first in flight sent
+ // time works.
+ for (auto it = unacked_packets_.begin(); it != unacked_packets_.end(); ++it) {
+ if (it->in_flight &&
+ GetPacketNumberSpace(it->encryption_level) == packet_number_space) {
+ return &(*it);
+ }
+ }
+ return nullptr;
+}
+
void QuicUnackedPacketMap::EnableMultiplePacketNumberSpacesSupport() {
if (supports_multiple_packet_number_spaces_) {
QUIC_BUG << "Multiple packet number spaces has already been enabled";