Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(87)

Unified Diff: net/quic/quic_unacked_packet_map.cc

Issue 509073004: Change TransmissionInfo's all_transmissions SequenceNumberSet* to (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@log_quic_version_74069715
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/quic_sent_packet_manager.cc ('k') | net/quic/test_tools/quic_sent_packet_manager_peer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/quic_unacked_packet_map.cc
diff --git a/net/quic/quic_unacked_packet_map.cc b/net/quic/quic_unacked_packet_map.cc
index 330e74aac7b416ab5fc4b7b0e06e84c1c9619057..0640c29940c1a5d0d5415c39575b1fb450fd70a1 100644
--- a/net/quic/quic_unacked_packet_map.cc
+++ b/net/quic/quic_unacked_packet_map.cc
@@ -27,7 +27,8 @@ QuicUnackedPacketMap::~QuicUnackedPacketMap() {
it != unacked_packets_.end(); ++it, ++index) {
delete it->retransmittable_frames;
// Only delete all_transmissions once, for the newest packet.
- if (index == *it->all_transmissions->rbegin()) {
+ if (it->all_transmissions != NULL &&
+ index == *it->all_transmissions->rbegin()) {
delete it->all_transmissions;
}
}
@@ -41,7 +42,6 @@ void QuicUnackedPacketMap::AddPacket(
serialized_packet.sequence_number);
unacked_packets_.push_back(
TransmissionInfo(serialized_packet.retransmittable_frames,
- serialized_packet.sequence_number,
serialized_packet.sequence_number_length));
if (serialized_packet.retransmittable_frames != NULL &&
serialized_packet.retransmittable_frames->HasCryptoHandshake()
@@ -82,7 +82,7 @@ void QuicUnackedPacketMap::OnRetransmittedPacket(
transmission_info->retransmittable_frames = NULL;
// Only keep one transmission older than largest observed, because only the
// most recent is expected to possibly be a spurious retransmission.
- if (transmission_info->all_transmissions->size() > 1 &&
+ if (transmission_info->all_transmissions != NULL &&
*(++transmission_info->all_transmissions->begin()) < largest_observed_) {
QuicPacketSequenceNumber old_transmission =
*transmission_info->all_transmissions->begin();
@@ -90,15 +90,18 @@ void QuicUnackedPacketMap::OnRetransmittedPacket(
&unacked_packets_[old_transmission - least_unacked_];
// Don't remove old packets if they're still in flight.
if (!old_info->in_flight) {
- transmission_info->all_transmissions->erase(old_transmission);
+ old_info->all_transmissions->pop_front();
// This will cause the packet be removed in RemoveObsoletePackets.
- old_info->all_transmissions = new SequenceNumberSet();
- old_info->all_transmissions->insert(old_transmission);
+ old_info->all_transmissions = NULL;
}
}
+ if (transmission_info->all_transmissions == NULL) {
+ transmission_info->all_transmissions = new SequenceNumberList();
+ transmission_info->all_transmissions->push_back(old_sequence_number);
+ }
+ transmission_info->all_transmissions->push_back(new_sequence_number);
unacked_packets_.push_back(
TransmissionInfo(frames,
- new_sequence_number,
transmission_info->sequence_number_length,
transmission_type,
transmission_info->all_transmissions));
@@ -114,7 +117,7 @@ void QuicUnackedPacketMap::ClearPreviousRetransmissions(size_t num_to_clear) {
break;
}
- info->all_transmissions->erase(least_unacked_);
+ info->all_transmissions->pop_front();
LOG_IF(DFATAL, info->all_transmissions->empty())
<< "Previous retransmissions must have a newer transmission.";
unacked_packets_.pop_front();
@@ -145,20 +148,19 @@ void QuicUnackedPacketMap::RemoveRetransmittability(
DCHECK_GE(sequence_number, least_unacked_);
DCHECK_LT(sequence_number, least_unacked_ + unacked_packets_.size());
TransmissionInfo* info = &unacked_packets_[sequence_number - least_unacked_];
- SequenceNumberSet* all_transmissions = info->all_transmissions;
- if (all_transmissions->size() == 1) {
+ SequenceNumberList* all_transmissions = info->all_transmissions;
+ if (all_transmissions == NULL) {
MaybeRemoveRetransmittableFrames(info);
return;
}
// TODO(ianswett): Consider adding a check to ensure there are retransmittable
// frames associated with this packet.
- for (SequenceNumberSet::const_iterator it = all_transmissions->begin();
+ for (SequenceNumberList::const_iterator it = all_transmissions->begin();
it != all_transmissions->end(); ++it) {
TransmissionInfo* transmission_info =
&unacked_packets_[*it - least_unacked_];
MaybeRemoveRetransmittableFrames(transmission_info);
- transmission_info->all_transmissions = new SequenceNumberSet();
- transmission_info->all_transmissions->insert(*it);
+ transmission_info->all_transmissions = NULL;
}
delete all_transmissions;
}
@@ -187,7 +189,7 @@ bool QuicUnackedPacketMap::IsPacketUseless(
return sequence_number <= largest_observed_ &&
!info.in_flight &&
info.retransmittable_frames == NULL &&
- info.all_transmissions->size() == 1;
+ info.all_transmissions == NULL;
}
bool QuicUnackedPacketMap::IsUnacked(
« no previous file with comments | « net/quic/quic_sent_packet_manager.cc ('k') | net/quic/test_tools/quic_sent_packet_manager_peer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698