Deprecate --gfe2_reloadable_flag_quic_use_circular_deque_for_unacked_packets_v2
PiperOrigin-RevId: 356316368
Change-Id: I300356ee5681e6510841f0ba43f5b994de427706
diff --git a/quic/core/quic_flags_list.h b/quic/core/quic_flags_list.h
index 285ee08..0be4be7 100644
--- a/quic/core/quic_flags_list.h
+++ b/quic/core/quic_flags_list.h
@@ -60,7 +60,6 @@
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_tls_use_per_handshaker_proof_source, false)
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_unified_iw_options, false)
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_update_packet_content_returns_connected, false)
-QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_use_circular_deque_for_unacked_packets_v2, true)
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_use_encryption_level_context, true)
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_use_write_or_buffer_data_at_level, false)
QUIC_FLAG(FLAGS_quic_reloadable_flag_send_quic_fallback_server_config_on_leto_error, false)
diff --git a/quic/core/quic_sent_packet_manager.cc b/quic/core/quic_sent_packet_manager.cc
index 61d680c..97c7c25 100644
--- a/quic/core/quic_sent_packet_manager.cc
+++ b/quic/core/quic_sent_packet_manager.cc
@@ -495,76 +495,42 @@
}
void QuicSentPacketManager::MarkInitialPacketsForRetransmission() {
- if (unacked_packets_.use_circular_deque()) {
- if (unacked_packets_.empty()) {
- return;
- }
- QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
- QuicPacketNumber largest_sent_packet =
- unacked_packets_.largest_sent_packet();
- for (; packet_number <= largest_sent_packet; ++packet_number) {
- QuicTransmissionInfo* transmission_info =
- unacked_packets_.GetMutableTransmissionInfo(packet_number);
- if (transmission_info->encryption_level == ENCRYPTION_INITIAL) {
- if (transmission_info->in_flight) {
- unacked_packets_.RemoveFromInFlight(transmission_info);
- }
- if (unacked_packets_.HasRetransmittableFrames(*transmission_info)) {
- MarkForRetransmission(packet_number, ALL_INITIAL_RETRANSMISSION);
- }
+ if (unacked_packets_.empty()) {
+ return;
+ }
+ QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
+ QuicPacketNumber largest_sent_packet = unacked_packets_.largest_sent_packet();
+ for (; packet_number <= largest_sent_packet; ++packet_number) {
+ QuicTransmissionInfo* transmission_info =
+ unacked_packets_.GetMutableTransmissionInfo(packet_number);
+ if (transmission_info->encryption_level == ENCRYPTION_INITIAL) {
+ if (transmission_info->in_flight) {
+ unacked_packets_.RemoveFromInFlight(transmission_info);
}
- }
- } else {
- QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
- for (QuicUnackedPacketMap::iterator it = unacked_packets_.begin();
- it != unacked_packets_.end(); ++it, ++packet_number) {
- if (it->encryption_level == ENCRYPTION_INITIAL) {
- if (it->in_flight) {
- unacked_packets_.RemoveFromInFlight(&*it);
- }
- if (unacked_packets_.HasRetransmittableFrames(*it)) {
- MarkForRetransmission(packet_number, ALL_INITIAL_RETRANSMISSION);
- }
+ if (unacked_packets_.HasRetransmittableFrames(*transmission_info)) {
+ MarkForRetransmission(packet_number, ALL_INITIAL_RETRANSMISSION);
}
}
}
}
void QuicSentPacketManager::MarkZeroRttPacketsForRetransmission() {
- if (unacked_packets_.use_circular_deque()) {
- if (unacked_packets_.empty()) {
- return;
- }
- QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
- QuicPacketNumber largest_sent_packet =
- unacked_packets_.largest_sent_packet();
- for (; packet_number <= largest_sent_packet; ++packet_number) {
- QuicTransmissionInfo* transmission_info =
- unacked_packets_.GetMutableTransmissionInfo(packet_number);
- if (transmission_info->encryption_level == ENCRYPTION_ZERO_RTT) {
- if (transmission_info->in_flight) {
- // Remove 0-RTT packets and packets of the wrong version from flight,
- // because neither can be processed by the peer.
- unacked_packets_.RemoveFromInFlight(transmission_info);
- }
- if (unacked_packets_.HasRetransmittableFrames(*transmission_info)) {
- MarkForRetransmission(packet_number, ALL_ZERO_RTT_RETRANSMISSION);
- }
+ if (unacked_packets_.empty()) {
+ return;
+ }
+ QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
+ QuicPacketNumber largest_sent_packet = unacked_packets_.largest_sent_packet();
+ for (; packet_number <= largest_sent_packet; ++packet_number) {
+ QuicTransmissionInfo* transmission_info =
+ unacked_packets_.GetMutableTransmissionInfo(packet_number);
+ if (transmission_info->encryption_level == ENCRYPTION_ZERO_RTT) {
+ if (transmission_info->in_flight) {
+ // Remove 0-RTT packets and packets of the wrong version from flight,
+ // because neither can be processed by the peer.
+ unacked_packets_.RemoveFromInFlight(transmission_info);
}
- }
- } else {
- QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
- for (QuicUnackedPacketMap::iterator it = unacked_packets_.begin();
- it != unacked_packets_.end(); ++it, ++packet_number) {
- if (it->encryption_level == ENCRYPTION_ZERO_RTT) {
- if (it->in_flight) {
- // Remove 0-RTT packets and packets of the wrong version from
- // flight, because neither can be processed by the peer.
- unacked_packets_.RemoveFromInFlight(&*it);
- }
- if (unacked_packets_.HasRetransmittableFrames(*it)) {
- MarkForRetransmission(packet_number, ALL_ZERO_RTT_RETRANSMISSION);
- }
+ if (unacked_packets_.HasRetransmittableFrames(*transmission_info)) {
+ MarkForRetransmission(packet_number, ALL_ZERO_RTT_RETRANSMISSION);
}
}
}
@@ -695,14 +661,9 @@
// transmission_info owning these frames may be deallocated after each
// retransimission. Make a copy of retransmissible frames to prevent the
// invalidation.
- if (unacked_packets_.use_circular_deque()) {
- unacked_packets_.RetransmitFrames(
- QuicFrames(transmission_info->retransmittable_frames),
- transmission_type);
- } else {
- unacked_packets_.RetransmitFrames(
- transmission_info->retransmittable_frames, transmission_type);
- }
+ unacked_packets_.RetransmitFrames(
+ QuicFrames(transmission_info->retransmittable_frames),
+ transmission_type);
return;
}
@@ -928,36 +889,19 @@
++consecutive_crypto_retransmission_count_;
bool packet_retransmitted = false;
std::vector<QuicPacketNumber> crypto_retransmissions;
- if (unacked_packets_.use_circular_deque()) {
- if (!unacked_packets_.empty()) {
- QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
- QuicPacketNumber largest_sent_packet =
- unacked_packets_.largest_sent_packet();
- for (; packet_number <= largest_sent_packet; ++packet_number) {
- QuicTransmissionInfo* transmission_info =
- unacked_packets_.GetMutableTransmissionInfo(packet_number);
- // Only retransmit frames which are in flight, and therefore have been
- // sent.
- if (!transmission_info->in_flight ||
- transmission_info->state != OUTSTANDING ||
- !transmission_info->has_crypto_handshake ||
- !unacked_packets_.HasRetransmittableFrames(*transmission_info)) {
- continue;
- }
- packet_retransmitted = true;
- crypto_retransmissions.push_back(packet_number);
- ++pending_timer_transmission_count_;
- }
- }
- } else {
+ if (!unacked_packets_.empty()) {
QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
- for (auto it = unacked_packets_.begin(); it != unacked_packets_.end();
- ++it, ++packet_number) {
+ QuicPacketNumber largest_sent_packet =
+ unacked_packets_.largest_sent_packet();
+ for (; packet_number <= largest_sent_packet; ++packet_number) {
+ QuicTransmissionInfo* transmission_info =
+ unacked_packets_.GetMutableTransmissionInfo(packet_number);
// Only retransmit frames which are in flight, and therefore have been
// sent.
- if (!it->in_flight || it->state != OUTSTANDING ||
- !it->has_crypto_handshake ||
- !unacked_packets_.HasRetransmittableFrames(*it)) {
+ if (!transmission_info->in_flight ||
+ transmission_info->state != OUTSTANDING ||
+ !transmission_info->has_crypto_handshake ||
+ !unacked_packets_.HasRetransmittableFrames(*transmission_info)) {
continue;
}
packet_retransmitted = true;
@@ -984,33 +928,18 @@
}
bool QuicSentPacketManager::MaybeRetransmitOldestPacket(TransmissionType type) {
- if (unacked_packets_.use_circular_deque()) {
- if (!unacked_packets_.empty()) {
- QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
- QuicPacketNumber largest_sent_packet =
- unacked_packets_.largest_sent_packet();
- for (; packet_number <= largest_sent_packet; ++packet_number) {
- QuicTransmissionInfo* transmission_info =
- unacked_packets_.GetMutableTransmissionInfo(packet_number);
- // Only retransmit frames which are in flight, and therefore have been
- // sent.
- if (!transmission_info->in_flight ||
- transmission_info->state != OUTSTANDING ||
- !unacked_packets_.HasRetransmittableFrames(*transmission_info)) {
- continue;
- }
- MarkForRetransmission(packet_number, type);
- return true;
- }
- }
- } else {
+ if (!unacked_packets_.empty()) {
QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
- for (auto it = unacked_packets_.begin(); it != unacked_packets_.end();
- ++it, ++packet_number) {
+ QuicPacketNumber largest_sent_packet =
+ unacked_packets_.largest_sent_packet();
+ for (; packet_number <= largest_sent_packet; ++packet_number) {
+ QuicTransmissionInfo* transmission_info =
+ unacked_packets_.GetMutableTransmissionInfo(packet_number);
// Only retransmit frames which are in flight, and therefore have been
// sent.
- if (!it->in_flight || it->state != OUTSTANDING ||
- !unacked_packets_.HasRetransmittableFrames(*it)) {
+ if (!transmission_info->in_flight ||
+ transmission_info->state != OUTSTANDING ||
+ !unacked_packets_.HasRetransmittableFrames(*transmission_info)) {
continue;
}
MarkForRetransmission(packet_number, type);
@@ -1028,31 +957,17 @@
<< "Retransmissions already queued:" << pending_timer_transmission_count_;
// Mark two packets for retransmission.
std::vector<QuicPacketNumber> retransmissions;
- if (unacked_packets_.use_circular_deque()) {
- if (!unacked_packets_.empty()) {
- QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
- QuicPacketNumber largest_sent_packet =
- unacked_packets_.largest_sent_packet();
- for (; packet_number <= largest_sent_packet; ++packet_number) {
- QuicTransmissionInfo* transmission_info =
- unacked_packets_.GetMutableTransmissionInfo(packet_number);
- if (transmission_info->state == OUTSTANDING &&
- unacked_packets_.HasRetransmittableFrames(*transmission_info) &&
- pending_timer_transmission_count_ < max_rto_packets_) {
- QUICHE_DCHECK(transmission_info->in_flight);
- retransmissions.push_back(packet_number);
- ++pending_timer_transmission_count_;
- }
- }
- }
- } else {
+ if (!unacked_packets_.empty()) {
QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
- for (auto it = unacked_packets_.begin(); it != unacked_packets_.end();
- ++it, ++packet_number) {
- if (it->state == OUTSTANDING &&
- unacked_packets_.HasRetransmittableFrames(*it) &&
+ QuicPacketNumber largest_sent_packet =
+ unacked_packets_.largest_sent_packet();
+ for (; packet_number <= largest_sent_packet; ++packet_number) {
+ QuicTransmissionInfo* transmission_info =
+ unacked_packets_.GetMutableTransmissionInfo(packet_number);
+ if (transmission_info->state == OUTSTANDING &&
+ unacked_packets_.HasRetransmittableFrames(*transmission_info) &&
pending_timer_transmission_count_ < max_rto_packets_) {
- QUICHE_DCHECK(it->in_flight);
+ QUICHE_DCHECK(transmission_info->in_flight);
retransmissions.push_back(packet_number);
++pending_timer_transmission_count_;
}
@@ -1092,37 +1007,19 @@
}
}
std::vector<QuicPacketNumber> probing_packets;
- if (unacked_packets_.use_circular_deque()) {
- if (!unacked_packets_.empty()) {
- QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
- QuicPacketNumber largest_sent_packet =
- unacked_packets_.largest_sent_packet();
- for (; packet_number <= largest_sent_packet; ++packet_number) {
- QuicTransmissionInfo* transmission_info =
- unacked_packets_.GetMutableTransmissionInfo(packet_number);
- if (transmission_info->state == OUTSTANDING &&
- unacked_packets_.HasRetransmittableFrames(*transmission_info) &&
- (!supports_multiple_packet_number_spaces() ||
- unacked_packets_.GetPacketNumberSpace(
- transmission_info->encryption_level) == packet_number_space)) {
- QUICHE_DCHECK(transmission_info->in_flight);
- probing_packets.push_back(packet_number);
- if (probing_packets.size() == pending_timer_transmission_count_) {
- break;
- }
- }
- }
- }
- } else {
+ if (!unacked_packets_.empty()) {
QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
- for (auto it = unacked_packets_.begin(); it != unacked_packets_.end();
- ++it, ++packet_number) {
- if (it->state == OUTSTANDING &&
- unacked_packets_.HasRetransmittableFrames(*it) &&
+ QuicPacketNumber largest_sent_packet =
+ unacked_packets_.largest_sent_packet();
+ for (; packet_number <= largest_sent_packet; ++packet_number) {
+ QuicTransmissionInfo* transmission_info =
+ unacked_packets_.GetMutableTransmissionInfo(packet_number);
+ if (transmission_info->state == OUTSTANDING &&
+ unacked_packets_.HasRetransmittableFrames(*transmission_info) &&
(!supports_multiple_packet_number_spaces() ||
- unacked_packets_.GetPacketNumberSpace(it->encryption_level) ==
- packet_number_space)) {
- QUICHE_DCHECK(it->in_flight);
+ unacked_packets_.GetPacketNumberSpace(
+ transmission_info->encryption_level) == packet_number_space)) {
+ QUICHE_DCHECK(transmission_info->in_flight);
probing_packets.push_back(packet_number);
if (probing_packets.size() == pending_timer_transmission_count_) {
break;
@@ -1179,44 +1076,25 @@
// No in flight data of space.
return;
}
- if (unacked_packets_.use_circular_deque()) {
- if (unacked_packets_.empty()) {
+ if (unacked_packets_.empty()) {
+ return;
+ }
+ QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
+ QuicPacketNumber largest_sent_packet = unacked_packets_.largest_sent_packet();
+ for (; packet_number <= largest_sent_packet; ++packet_number) {
+ QuicTransmissionInfo* transmission_info =
+ unacked_packets_.GetMutableTransmissionInfo(packet_number);
+ if (transmission_info->state == OUTSTANDING &&
+ unacked_packets_.HasRetransmittableFrames(*transmission_info) &&
+ unacked_packets_.GetPacketNumberSpace(
+ transmission_info->encryption_level) == space) {
+ QUICHE_DCHECK(transmission_info->in_flight);
+ if (pending_timer_transmission_count_ == 0) {
+ pending_timer_transmission_count_ = 1;
+ }
+ MarkForRetransmission(packet_number, PTO_RETRANSMISSION);
return;
}
- QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
- QuicPacketNumber largest_sent_packet =
- unacked_packets_.largest_sent_packet();
- for (; packet_number <= largest_sent_packet; ++packet_number) {
- QuicTransmissionInfo* transmission_info =
- unacked_packets_.GetMutableTransmissionInfo(packet_number);
- if (transmission_info->state == OUTSTANDING &&
- unacked_packets_.HasRetransmittableFrames(*transmission_info) &&
- unacked_packets_.GetPacketNumberSpace(
- transmission_info->encryption_level) == space) {
- QUICHE_DCHECK(transmission_info->in_flight);
- if (pending_timer_transmission_count_ == 0) {
- pending_timer_transmission_count_ = 1;
- }
- MarkForRetransmission(packet_number, PTO_RETRANSMISSION);
- return;
- }
- }
- } else {
- QuicPacketNumber packet_number = unacked_packets_.GetLeastUnacked();
- for (auto it = unacked_packets_.begin(); it != unacked_packets_.end();
- ++it, ++packet_number) {
- if (it->state == OUTSTANDING &&
- unacked_packets_.HasRetransmittableFrames(*it) &&
- unacked_packets_.GetPacketNumberSpace(it->encryption_level) ==
- space) {
- QUICHE_DCHECK(it->in_flight);
- if (pending_timer_transmission_count_ == 0) {
- pending_timer_transmission_count_ = 1;
- }
- MarkForRetransmission(packet_number, PTO_RETRANSMISSION);
- return;
- }
- }
}
}
diff --git a/quic/core/quic_unacked_packet_map.cc b/quic/core/quic_unacked_packet_map.cc
index b6872ff..eeda215 100644
--- a/quic/core/quic_unacked_packet_map.cc
+++ b/quic/core/quic_unacked_packet_map.cc
@@ -124,20 +124,11 @@
last_crypto_packet_sent_time_(QuicTime::Zero()),
session_notifier_(nullptr),
supports_multiple_packet_number_spaces_(false) {
- if (use_circular_deque_) {
- QUIC_RELOADABLE_FLAG_COUNT(quic_use_circular_deque_for_unacked_packets_v2);
- }
}
QuicUnackedPacketMap::~QuicUnackedPacketMap() {
- if (use_circular_deque_) {
- for (QuicTransmissionInfo& transmission_info : unacked_packets_) {
- DeleteFrames(&(transmission_info.retransmittable_frames));
- }
- } else {
- for (QuicTransmissionInfo& transmission_info : unacked_packets_deque_) {
- DeleteFrames(&(transmission_info.retransmittable_frames));
- }
+ for (QuicTransmissionInfo& transmission_info : unacked_packets_) {
+ DeleteFrames(&(transmission_info.retransmittable_frames));
}
}
@@ -153,10 +144,10 @@
largest_sent_packet_ >= packet_number)
<< "largest_sent_packet_: " << largest_sent_packet_
<< ", packet_number: " << packet_number;
- QUICHE_DCHECK_GE(packet_number, least_unacked_ + unacked_packets_size());
- while (least_unacked_ + unacked_packets_size() < packet_number) {
- unacked_packets_push_back(QuicTransmissionInfo());
- unacked_packets_back().state = NEVER_SENT;
+ QUICHE_DCHECK_GE(packet_number, least_unacked_ + unacked_packets_.size());
+ while (least_unacked_ + unacked_packets_.size() < packet_number) {
+ unacked_packets_.push_back(QuicTransmissionInfo());
+ unacked_packets_.back().state = NEVER_SENT;
}
const bool has_crypto_handshake = packet.has_crypto_handshake == IS_HANDSHAKE;
@@ -183,7 +174,7 @@
last_inflight_packet_sent_time_ = sent_time;
last_inflight_packets_sent_time_[packet_number_space] = sent_time;
}
- unacked_packets_push_back(info);
+ unacked_packets_.push_back(info);
// Swap the retransmittable frames to avoid allocations.
// TODO(ianswett): Could use emplace_back when Chromium can.
if (has_crypto_handshake) {
@@ -191,16 +182,16 @@
}
mutable_packet->retransmittable_frames.swap(
- unacked_packets_back().retransmittable_frames);
+ unacked_packets_.back().retransmittable_frames);
}
void QuicUnackedPacketMap::RemoveObsoletePackets() {
- while (!unacked_packets_empty()) {
- if (!IsPacketUseless(least_unacked_, unacked_packets_front())) {
+ while (!unacked_packets_.empty()) {
+ if (!IsPacketUseless(least_unacked_, unacked_packets_.front())) {
break;
}
- DeleteFrames(&unacked_packets_front().retransmittable_frames);
- unacked_packets_pop_front();
+ DeleteFrames(&unacked_packets_.front().retransmittable_frames);
+ unacked_packets_.pop_front();
++least_unacked_;
}
}
@@ -208,9 +199,9 @@
bool QuicUnackedPacketMap::HasRetransmittableFrames(
QuicPacketNumber packet_number) const {
QUICHE_DCHECK_GE(packet_number, least_unacked_);
- QUICHE_DCHECK_LT(packet_number, least_unacked_ + unacked_packets_size());
+ QUICHE_DCHECK_LT(packet_number, least_unacked_ + unacked_packets_.size());
return HasRetransmittableFrames(
- unacked_packets_at(packet_number - least_unacked_));
+ unacked_packets_[packet_number - least_unacked_]);
}
bool QuicUnackedPacketMap::HasRetransmittableFrames(
@@ -236,9 +227,9 @@
void QuicUnackedPacketMap::RemoveRetransmittability(
QuicPacketNumber packet_number) {
QUICHE_DCHECK_GE(packet_number, least_unacked_);
- QUICHE_DCHECK_LT(packet_number, least_unacked_ + unacked_packets_size());
+ QUICHE_DCHECK_LT(packet_number, least_unacked_ + unacked_packets_.size());
QuicTransmissionInfo* info =
- &unacked_packets_at(packet_number - least_unacked_);
+ &unacked_packets_[packet_number - least_unacked_];
RemoveRetransmittability(info);
}
@@ -289,11 +280,11 @@
bool QuicUnackedPacketMap::IsUnacked(QuicPacketNumber packet_number) const {
if (packet_number < least_unacked_ ||
- packet_number >= least_unacked_ + unacked_packets_size()) {
+ packet_number >= least_unacked_ + unacked_packets_.size()) {
return false;
}
return !IsPacketUseless(packet_number,
- unacked_packets_at(packet_number - least_unacked_));
+ unacked_packets_[packet_number - least_unacked_]);
}
void QuicUnackedPacketMap::RemoveFromInFlight(QuicTransmissionInfo* info) {
@@ -327,9 +318,9 @@
void QuicUnackedPacketMap::RemoveFromInFlight(QuicPacketNumber packet_number) {
QUICHE_DCHECK_GE(packet_number, least_unacked_);
- QUICHE_DCHECK_LT(packet_number, least_unacked_ + unacked_packets_size());
+ QUICHE_DCHECK_LT(packet_number, least_unacked_ + unacked_packets_.size());
QuicTransmissionInfo* info =
- &unacked_packets_at(packet_number - least_unacked_);
+ &unacked_packets_[packet_number - least_unacked_];
RemoveFromInFlight(info);
}
@@ -391,12 +382,12 @@
const QuicTransmissionInfo& QuicUnackedPacketMap::GetTransmissionInfo(
QuicPacketNumber packet_number) const {
- return unacked_packets_at(packet_number - least_unacked_);
+ return unacked_packets_[packet_number - least_unacked_];
}
QuicTransmissionInfo* QuicUnackedPacketMap::GetMutableTransmissionInfo(
QuicPacketNumber packet_number) {
- return &unacked_packets_at(packet_number - least_unacked_);
+ return &unacked_packets_[packet_number - least_unacked_];
}
QuicTime QuicUnackedPacketMap::GetLastInFlightPacketSentTime() const {
@@ -641,7 +632,7 @@
return -1;
}
int32_t content = 0;
- const QuicTransmissionInfo& last_packet = unacked_packets_back();
+ const QuicTransmissionInfo& last_packet = unacked_packets_.back();
for (const auto& frame : last_packet.retransmittable_frames) {
content |= GetFrameTypeBitfield(frame.type);
}
diff --git a/quic/core/quic_unacked_packet_map.h b/quic/core/quic_unacked_packet_map.h
index 227c4f1..75c835d 100644
--- a/quic/core/quic_unacked_packet_map.h
+++ b/quic/core/quic_unacked_packet_map.h
@@ -92,9 +92,7 @@
bool HasUnackedRetransmittableFrames() const;
// Returns true if there are no packets present in the unacked packet map.
- bool empty() const { return unacked_packets_empty(); }
-
- bool use_circular_deque() const { return use_circular_deque_; }
+ bool empty() const { return unacked_packets_.empty(); }
// Returns the largest packet number that has been sent.
QuicPacketNumber largest_sent_packet() const { return largest_sent_packet_; }
@@ -114,83 +112,18 @@
// been acked by the peer. If there are no unacked packets, returns 0.
QuicPacketNumber GetLeastUnacked() const;
- template <typename Itr1, typename Itr2>
- class QUIC_EXPORT_PRIVATE IteratorWrapper {
- public:
- explicit IteratorWrapper(Itr1 itr1) {
- itr_.template emplace<0>(std::move(itr1));
- }
- explicit IteratorWrapper(Itr2 itr2) {
- itr_.template emplace<1>(std::move(itr2));
- }
-
- auto& operator*() const {
- return absl::visit(
- [](const auto& itr) -> auto& { return *itr; }, itr_);
- }
-
- auto* operator->() const {
- return absl::visit([](const auto& itr) { return &*itr; }, itr_);
- }
-
- IteratorWrapper& operator++() {
- absl::visit([](auto& itr) { ++itr; }, itr_);
- return *this;
- }
-
- IteratorWrapper& operator+=(int difference) {
- absl::visit([difference](auto& itr) { itr += difference; }, itr_);
- return *this;
- }
-
- IteratorWrapper operator++(int) {
- return absl::visit([](auto& itr) { IteratorWrapper(itr++); }, itr_);
- }
-
- bool operator!=(const IteratorWrapper& other) const {
- return itr_ != other.itr_;
- }
-
- private:
- absl::variant<Itr1, Itr2> itr_;
- };
-
using const_iterator =
- IteratorWrapper<std::deque<QuicTransmissionInfo>::const_iterator,
- QuicCircularDeque<QuicTransmissionInfo>::const_iterator>;
- using const_reverse_iterator = IteratorWrapper<
- std::deque<QuicTransmissionInfo>::const_reverse_iterator,
- QuicCircularDeque<QuicTransmissionInfo>::const_reverse_iterator>;
- using iterator =
- IteratorWrapper<std::deque<QuicTransmissionInfo>::iterator,
- QuicCircularDeque<QuicTransmissionInfo>::iterator>;
+ QuicCircularDeque<QuicTransmissionInfo>::const_iterator;
+ using const_reverse_iterator =
+ QuicCircularDeque<QuicTransmissionInfo>::const_reverse_iterator;
+ using iterator = QuicCircularDeque<QuicTransmissionInfo>::iterator;
- const_iterator begin() const {
- return use_circular_deque_ ? const_iterator(unacked_packets_.begin())
- : const_iterator(unacked_packets_deque_.begin());
- }
- const_iterator end() const {
- return use_circular_deque_ ? const_iterator(unacked_packets_.end())
- : const_iterator(unacked_packets_deque_.end());
- }
- const_reverse_iterator rbegin() const {
- return use_circular_deque_
- ? const_reverse_iterator(unacked_packets_.rbegin())
- : const_reverse_iterator(unacked_packets_deque_.rbegin());
- }
- const_reverse_iterator rend() const {
- return use_circular_deque_
- ? const_reverse_iterator(unacked_packets_.rend())
- : const_reverse_iterator(unacked_packets_deque_.rend());
- }
- iterator begin() {
- return use_circular_deque_ ? iterator(unacked_packets_.begin())
- : iterator(unacked_packets_deque_.begin());
- }
- iterator end() {
- return use_circular_deque_ ? iterator(unacked_packets_.end())
- : iterator(unacked_packets_deque_.end());
- }
+ const_iterator begin() const { return unacked_packets_.begin(); }
+ const_iterator end() const { return unacked_packets_.end(); }
+ const_reverse_iterator rbegin() const { return unacked_packets_.rbegin(); }
+ const_reverse_iterator rend() const { return unacked_packets_.rend(); }
+ iterator begin() { return unacked_packets_.begin(); }
+ iterator end() { return unacked_packets_.end(); }
// Returns true if there are unacked packets that are in flight.
bool HasInFlightPackets() const;
@@ -312,14 +245,12 @@
}
void ReserveInitialCapacity(size_t initial_capacity) {
- if (use_circular_deque_) {
- unacked_packets_.reserve(initial_capacity);
- }
+ unacked_packets_.reserve(initial_capacity);
}
std::string DebugString() const {
return absl::StrCat(
- "{size: ", unacked_packets_size(),
+ "{size: ", unacked_packets_.size(),
", least_unacked: ", least_unacked_.ToString(),
", largest_sent_packet: ", largest_sent_packet_.ToString(),
", largest_acked: ", largest_acked_.ToString(),
@@ -330,64 +261,6 @@
private:
friend class test::QuicUnackedPacketMapPeer;
- // TODO(haoyuewang) Remove these methods when deprecate
- // quic_use_circular_deque_for_unacked_packets_v2 flag.
- size_t unacked_packets_size() const {
- return use_circular_deque_ ? unacked_packets_.size()
- : unacked_packets_deque_.size();
- }
-
- const QuicTransmissionInfo& unacked_packets_at(int index) const {
- return use_circular_deque_ ? unacked_packets_[index]
- : unacked_packets_deque_[index];
- }
-
- QuicTransmissionInfo& unacked_packets_at(int index) {
- return use_circular_deque_ ? unacked_packets_[index]
- : unacked_packets_deque_[index];
- }
-
- const QuicTransmissionInfo& unacked_packets_front() const {
- return use_circular_deque_ ? unacked_packets_.front()
- : unacked_packets_deque_.front();
- }
-
- QuicTransmissionInfo& unacked_packets_front() {
- return use_circular_deque_ ? unacked_packets_.front()
- : unacked_packets_deque_.front();
- }
-
- const QuicTransmissionInfo& unacked_packets_back() const {
- return use_circular_deque_ ? unacked_packets_.back()
- : unacked_packets_deque_.back();
- }
-
- QuicTransmissionInfo& unacked_packets_back() {
- return use_circular_deque_ ? unacked_packets_.back()
- : unacked_packets_deque_.back();
- }
-
- void unacked_packets_push_back(QuicTransmissionInfo info) {
- if (use_circular_deque_) {
- unacked_packets_.push_back(std::move(info));
- } else {
- unacked_packets_deque_.push_back(std::move(info));
- }
- }
-
- void unacked_packets_pop_front() {
- if (use_circular_deque_) {
- unacked_packets_.pop_front();
- } else {
- unacked_packets_deque_.pop_front();
- }
- }
-
- bool unacked_packets_empty() const {
- return use_circular_deque_ ? unacked_packets_.empty()
- : unacked_packets_deque_.empty();
- }
-
// Returns true if packet may be useful for an RTT measurement.
bool IsPacketUsefulForMeasuringRtt(QuicPacketNumber packet_number,
const QuicTransmissionInfo& info) const;
@@ -428,10 +301,6 @@
// be removed from the map and the new entry's retransmittable frames will be
// set to nullptr.
QuicCircularDeque<QuicTransmissionInfo> unacked_packets_;
- std::deque<QuicTransmissionInfo> unacked_packets_deque_;
-
- const bool use_circular_deque_ =
- GetQuicReloadableFlag(quic_use_circular_deque_for_unacked_packets_v2);
// The packet at the 0th index of unacked_packets_.
QuicPacketNumber least_unacked_;
diff --git a/quic/core/quic_unacked_packet_map_test.cc b/quic/core/quic_unacked_packet_map_test.cc
index eb6b0a6..07efee9 100644
--- a/quic/core/quic_unacked_packet_map_test.cc
+++ b/quic/core/quic_unacked_packet_map_test.cc
@@ -658,7 +658,6 @@
}
TEST_P(QuicUnackedPacketMapTest, ReserveInitialCapacityTest) {
- SetQuicReloadableFlag(quic_use_circular_deque_for_unacked_packets_v2, true);
QuicUnackedPacketMap unacked_packets(GetParam());
ASSERT_EQ(QuicUnackedPacketMapPeer::GetCapacity(unacked_packets), 0u);
unacked_packets.ReserveInitialCapacity(16);