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

Side by Side Diff: net/quic/quic_unacked_packet_map.cc

Issue 968493002: Cleanup of QUIC's TransmissionInfo constructor to make more fields const (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@Fixing_bug_QUIC_prober_86703503
Patch Set: Created 5 years, 9 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 unified diff | Download patch
« no previous file with comments | « net/quic/quic_protocol.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/quic_unacked_packet_map.h" 5 #include "net/quic/quic_unacked_packet_map.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "net/quic/quic_connection_stats.h" 9 #include "net/quic/quic_connection_stats.h"
10 #include "net/quic/quic_utils_chromium.h" 10 #include "net/quic/quic_utils_chromium.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 bool set_in_flight) { 43 bool set_in_flight) {
44 QuicPacketSequenceNumber sequence_number = packet.sequence_number; 44 QuicPacketSequenceNumber sequence_number = packet.sequence_number;
45 LOG_IF(DFATAL, largest_sent_packet_ > sequence_number); 45 LOG_IF(DFATAL, largest_sent_packet_ > sequence_number);
46 DCHECK_GE(sequence_number, least_unacked_ + unacked_packets_.size()); 46 DCHECK_GE(sequence_number, least_unacked_ + unacked_packets_.size());
47 while (least_unacked_ + unacked_packets_.size() < sequence_number) { 47 while (least_unacked_ + unacked_packets_.size() < sequence_number) {
48 unacked_packets_.push_back(TransmissionInfo()); 48 unacked_packets_.push_back(TransmissionInfo());
49 unacked_packets_.back().is_unackable = true; 49 unacked_packets_.back().is_unackable = true;
50 } 50 }
51 51
52 TransmissionInfo info(packet.retransmittable_frames, 52 TransmissionInfo info(packet.retransmittable_frames,
53 packet.sequence_number_length, 53 packet.sequence_number_length, transmission_type,
54 transmission_type, 54 sent_time, bytes_sent, packet.is_fec_packet);
55 sent_time);
56 info.is_fec_packet = packet.is_fec_packet;
57
58 if (old_sequence_number == 0) { 55 if (old_sequence_number == 0) {
59 if (packet.retransmittable_frames != nullptr && 56 if (packet.retransmittable_frames != nullptr &&
60 packet.retransmittable_frames->HasCryptoHandshake() == IS_HANDSHAKE) { 57 packet.retransmittable_frames->HasCryptoHandshake() == IS_HANDSHAKE) {
61 ++pending_crypto_packet_count_; 58 ++pending_crypto_packet_count_;
62 } 59 }
63 } else { 60 } else {
64 TransferRetransmissionInfo( 61 TransferRetransmissionInfo(
65 old_sequence_number, sequence_number, transmission_type, &info); 62 old_sequence_number, sequence_number, transmission_type, &info);
66 } 63 }
67 64
68 largest_sent_packet_ = sequence_number; 65 largest_sent_packet_ = sequence_number;
69 if (set_in_flight) { 66 if (set_in_flight) {
70 bytes_in_flight_ += bytes_sent; 67 bytes_in_flight_ += bytes_sent;
71 info.bytes_sent = bytes_sent;
72 info.in_flight = true; 68 info.in_flight = true;
73 } 69 }
74 unacked_packets_.push_back(info); 70 unacked_packets_.push_back(info);
75 } 71 }
76 72
77 void QuicUnackedPacketMap::RemoveObsoletePackets() { 73 void QuicUnackedPacketMap::RemoveObsoletePackets() {
78 while (!unacked_packets_.empty()) { 74 while (!unacked_packets_.empty()) {
79 if (!IsPacketRemovable(least_unacked_, unacked_packets_.front())) { 75 if (!IsPacketRemovable(least_unacked_, unacked_packets_.front())) {
80 break; 76 break;
81 } 77 }
82 unacked_packets_.pop_front(); 78 unacked_packets_.pop_front();
83 ++least_unacked_; 79 ++least_unacked_;
84 } 80 }
85 } 81 }
86 82
87 void QuicUnackedPacketMap::TransferRetransmissionInfo( 83 void QuicUnackedPacketMap::TransferRetransmissionInfo(
88 QuicPacketSequenceNumber old_sequence_number, 84 QuicPacketSequenceNumber old_sequence_number,
89 QuicPacketSequenceNumber new_sequence_number, 85 QuicPacketSequenceNumber new_sequence_number,
90 TransmissionType transmission_type, 86 TransmissionType transmission_type,
91 TransmissionInfo* info) { 87 TransmissionInfo* info) {
92 DCHECK_GE(old_sequence_number, least_unacked_); 88 DCHECK_GE(old_sequence_number, least_unacked_);
93 DCHECK_LT(old_sequence_number, least_unacked_ + unacked_packets_.size()); 89 DCHECK_LT(old_sequence_number, least_unacked_ + unacked_packets_.size());
94 DCHECK_GE(new_sequence_number, least_unacked_ + unacked_packets_.size()); 90 DCHECK_GE(new_sequence_number, least_unacked_ + unacked_packets_.size());
95 DCHECK_NE(NOT_RETRANSMISSION, transmission_type); 91 DCHECK_NE(NOT_RETRANSMISSION, transmission_type);
96 92
97 // TODO(ianswett): Discard and lose the packet lazily instead of immediately.
98 TransmissionInfo* transmission_info = 93 TransmissionInfo* transmission_info =
99 &unacked_packets_.at(old_sequence_number - least_unacked_); 94 &unacked_packets_.at(old_sequence_number - least_unacked_);
100 RetransmittableFrames* frames = transmission_info->retransmittable_frames; 95 RetransmittableFrames* frames = transmission_info->retransmittable_frames;
101 transmission_info->retransmittable_frames = nullptr; 96 transmission_info->retransmittable_frames = nullptr;
102 LOG_IF(DFATAL, frames == nullptr) 97 LOG_IF(DFATAL, frames == nullptr)
103 << "Attempt to retransmit packet with no " 98 << "Attempt to retransmit packet with no "
104 << "retransmittable frames: " << old_sequence_number; 99 << "retransmittable frames: " << old_sequence_number;
105 100
106 // Only keep one transmission older than largest observed, because only the 101 // Only keep one transmission older than largest observed, because only the
107 // most recent is expected to possibly be a spurious retransmission. 102 // most recent is expected to possibly be a spurious retransmission.
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 } 377 }
383 } 378 }
384 return false; 379 return false;
385 } 380 }
386 381
387 QuicPacketSequenceNumber QuicUnackedPacketMap::GetLeastUnacked() const { 382 QuicPacketSequenceNumber QuicUnackedPacketMap::GetLeastUnacked() const {
388 return least_unacked_; 383 return least_unacked_;
389 } 384 }
390 385
391 } // namespace net 386 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_protocol.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698