| 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 25e2a8afaf3b62561d7f4bad79c3fb63c4ff818a..be665d2228ef683a47326fe90a8249d33ffb5466 100644
|
| --- a/net/quic/quic_unacked_packet_map.cc
|
| +++ b/net/quic/quic_unacked_packet_map.cc
|
| @@ -50,11 +50,8 @@ void QuicUnackedPacketMap::AddSentPacket(
|
| }
|
|
|
| TransmissionInfo info(packet.retransmittable_frames,
|
| - packet.sequence_number_length,
|
| - transmission_type,
|
| - sent_time);
|
| - info.is_fec_packet = packet.is_fec_packet;
|
| -
|
| + packet.sequence_number_length, transmission_type,
|
| + sent_time, bytes_sent, packet.is_fec_packet);
|
| if (old_sequence_number == 0) {
|
| if (packet.retransmittable_frames != nullptr &&
|
| packet.retransmittable_frames->HasCryptoHandshake() == IS_HANDSHAKE) {
|
| @@ -68,7 +65,6 @@ void QuicUnackedPacketMap::AddSentPacket(
|
| largest_sent_packet_ = sequence_number;
|
| if (set_in_flight) {
|
| bytes_in_flight_ += bytes_sent;
|
| - info.bytes_sent = bytes_sent;
|
| info.in_flight = true;
|
| }
|
| unacked_packets_.push_back(info);
|
| @@ -94,7 +90,6 @@ void QuicUnackedPacketMap::TransferRetransmissionInfo(
|
| DCHECK_GE(new_sequence_number, least_unacked_ + unacked_packets_.size());
|
| DCHECK_NE(NOT_RETRANSMISSION, transmission_type);
|
|
|
| - // TODO(ianswett): Discard and lose the packet lazily instead of immediately.
|
| TransmissionInfo* transmission_info =
|
| &unacked_packets_.at(old_sequence_number - least_unacked_);
|
| RetransmittableFrames* frames = transmission_info->retransmittable_frames;
|
| @@ -201,10 +196,9 @@ void QuicUnackedPacketMap::RemoveRetransmittability(
|
| }
|
| // TODO(ianswett): Consider adding a check to ensure there are retransmittable
|
| // frames associated with this packet.
|
| - for (SequenceNumberList::const_iterator it = all_transmissions->begin();
|
| - it != all_transmissions->end(); ++it) {
|
| + for (QuicPacketSequenceNumber sequence_number : *all_transmissions) {
|
| TransmissionInfo* transmission_info =
|
| - &unacked_packets_[*it - least_unacked_];
|
| + &unacked_packets_[sequence_number - least_unacked_];
|
| MaybeRemoveRetransmittableFrames(transmission_info);
|
| transmission_info->all_transmissions = nullptr;
|
| }
|
| @@ -218,10 +212,9 @@ void QuicUnackedPacketMap::RemoveAckability(TransmissionInfo* info) {
|
| if (all_transmissions == nullptr) {
|
| return;
|
| }
|
| - for (SequenceNumberList::const_iterator it = all_transmissions->begin();
|
| - it != all_transmissions->end(); ++it) {
|
| + for (QuicPacketSequenceNumber sequence_number : *all_transmissions) {
|
| TransmissionInfo* transmission_info =
|
| - &unacked_packets_[*it - least_unacked_];
|
| + &unacked_packets_[sequence_number - least_unacked_];
|
| transmission_info->all_transmissions = nullptr;
|
| transmission_info->is_unackable = true;
|
| }
|
| @@ -255,14 +248,12 @@ bool QuicUnackedPacketMap::IsPacketUsefulForMeasuringRtt(
|
| }
|
|
|
| bool QuicUnackedPacketMap::IsPacketUsefulForCongestionControl(
|
| - QuicPacketSequenceNumber sequence_number,
|
| const TransmissionInfo& info) const {
|
| // Packet contributes to congestion control if it is considered inflight.
|
| return info.in_flight;
|
| }
|
|
|
| bool QuicUnackedPacketMap::IsPacketUsefulForRetransmittableData(
|
| - QuicPacketSequenceNumber sequence_number,
|
| const TransmissionInfo& info) const {
|
| // Packet may have retransmittable frames, or the data may have been
|
| // retransmitted with a new sequence number.
|
| @@ -274,8 +265,8 @@ bool QuicUnackedPacketMap::IsPacketUseless(
|
| QuicPacketSequenceNumber sequence_number,
|
| const TransmissionInfo& info) const {
|
| return !IsPacketUsefulForMeasuringRtt(sequence_number, info) &&
|
| - !IsPacketUsefulForCongestionControl(sequence_number, info) &&
|
| - !IsPacketUsefulForRetransmittableData(sequence_number, info);
|
| + !IsPacketUsefulForCongestionControl(info) &&
|
| + !IsPacketUsefulForRetransmittableData(info);
|
| }
|
|
|
| bool QuicUnackedPacketMap::IsPacketRemovable(
|
| @@ -283,8 +274,8 @@ bool QuicUnackedPacketMap::IsPacketRemovable(
|
| const TransmissionInfo& info) const {
|
| return (!IsPacketUsefulForMeasuringRtt(sequence_number, info) ||
|
| unacked_packets_.size() > kMaxTcpCongestionWindow) &&
|
| - !IsPacketUsefulForCongestionControl(sequence_number, info) &&
|
| - !IsPacketUsefulForRetransmittableData(sequence_number, info);
|
| + !IsPacketUsefulForCongestionControl(info) &&
|
| + !IsPacketUsefulForRetransmittableData(info);
|
| }
|
|
|
| bool QuicUnackedPacketMap::IsUnacked(
|
| @@ -388,22 +379,8 @@ bool QuicUnackedPacketMap::HasUnackedRetransmittableFrames() const {
|
| return false;
|
| }
|
|
|
| -QuicPacketSequenceNumber
|
| -QuicUnackedPacketMap::GetLeastUnacked() const {
|
| +QuicPacketSequenceNumber QuicUnackedPacketMap::GetLeastUnacked() const {
|
| return least_unacked_;
|
| }
|
|
|
| -void QuicUnackedPacketMap::RestoreInFlight(
|
| - QuicPacketSequenceNumber sequence_number) {
|
| - DCHECK_GE(sequence_number, least_unacked_);
|
| - DCHECK_LT(sequence_number, least_unacked_ + unacked_packets_.size());
|
| - TransmissionInfo* info = &unacked_packets_[sequence_number - least_unacked_];
|
| - DCHECK(!info->in_flight);
|
| - DCHECK_NE(0u, info->bytes_sent);
|
| - DCHECK(info->sent_time.IsInitialized());
|
| -
|
| - bytes_in_flight_ += info->bytes_sent;
|
| - info->in_flight = true;
|
| -}
|
| -
|
| } // namespace net
|
|
|