Index: net/quic/quic_received_packet_manager.cc |
diff --git a/net/quic/quic_received_packet_manager.cc b/net/quic/quic_received_packet_manager.cc |
index b3f9e38590b2fc5dcce3cbe26ae0a33902d0b6c9..702573e091264b689231e3baa6acc9049f3e0e88 100644 |
--- a/net/quic/quic_received_packet_manager.cc |
+++ b/net/quic/quic_received_packet_manager.cc |
@@ -148,15 +148,17 @@ void QuicReceivedPacketManager::RecordPacketReceived( |
QuicPacketNumber packet_number = header.packet_packet_number; |
DCHECK(IsAwaitingPacket(packet_number)); |
- InsertMissingPacketsBetween(&ack_frame_, max(ack_frame_.largest_observed + 1, |
- peer_least_packet_awaiting_ack_), |
- packet_number); |
+ // Adds the range of packet numbers from max(largest observed + 1, least |
+ // awaiting ack) up to packet_number not including packet_number. |
+ ack_frame_.missing_packets.Add( |
+ max(ack_frame_.largest_observed + 1, peer_least_packet_awaiting_ack_), |
+ packet_number); |
if (ack_frame_.largest_observed > packet_number) { |
// We've gotten one of the out of order packets - remove it from our |
// "missing packets" list. |
DVLOG(1) << "Removing " << packet_number << " from missing list"; |
- ack_frame_.missing_packets.erase(packet_number); |
+ ack_frame_.missing_packets.Remove(packet_number); |
// Record how out of order stats. |
++stats_->packets_reordered; |
@@ -186,7 +188,7 @@ void QuicReceivedPacketManager::RecordPacketRevived( |
} |
bool QuicReceivedPacketManager::IsMissing(QuicPacketNumber packet_number) { |
- return ContainsKey(ack_frame_.missing_packets, packet_number); |
+ return ack_frame_.missing_packets.Contains(packet_number); |
} |
bool QuicReceivedPacketManager::IsAwaitingPacket( |
@@ -241,11 +243,7 @@ bool QuicReceivedPacketManager::DontWaitForPacketsBefore( |
ack_frame_.revived_packets.erase( |
ack_frame_.revived_packets.begin(), |
ack_frame_.revived_packets.lower_bound(least_unacked)); |
- size_t missing_packets_count = ack_frame_.missing_packets.size(); |
- ack_frame_.missing_packets.erase( |
- ack_frame_.missing_packets.begin(), |
- ack_frame_.missing_packets.lower_bound(least_unacked)); |
- return missing_packets_count != ack_frame_.missing_packets.size(); |
+ return ack_frame_.missing_packets.RemoveUpTo(least_unacked); |
} |
void QuicReceivedPacketManager::UpdatePacketInformationSentByPeer( |
@@ -263,15 +261,14 @@ void QuicReceivedPacketManager::UpdatePacketInformationSentByPeer( |
} |
peer_least_packet_awaiting_ack_ = stop_waiting.least_unacked; |
} |
- DCHECK(ack_frame_.missing_packets.empty() || |
- *ack_frame_.missing_packets.begin() >= |
- peer_least_packet_awaiting_ack_); |
+ DCHECK(ack_frame_.missing_packets.Empty() || |
+ ack_frame_.missing_packets.Min() >= peer_least_packet_awaiting_ack_); |
} |
bool QuicReceivedPacketManager::HasNewMissingPackets() const { |
- return !ack_frame_.missing_packets.empty() && |
- (ack_frame_.largest_observed - |
- *ack_frame_.missing_packets.rbegin()) <= kMaxPacketsAfterNewMissing; |
+ return !ack_frame_.missing_packets.Empty() && |
+ (ack_frame_.largest_observed - ack_frame_.missing_packets.Max()) <= |
+ kMaxPacketsAfterNewMissing; |
} |
size_t QuicReceivedPacketManager::NumTrackedPackets() const { |