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

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

Issue 908493004: Landing Recent QUIC Changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix valgrind error Created 5 years, 10 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_received_packet_manager.h ('k') | net/quic/quic_sent_packet_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_received_packet_manager.h" 5 #include "net/quic/quic_received_packet_manager.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 AdvanceFirstGapAndGarbageCollectEntropyMap() { 128 AdvanceFirstGapAndGarbageCollectEntropyMap() {
129 while (!packets_entropy_.empty() && packets_entropy_.front().second) { 129 while (!packets_entropy_.empty() && packets_entropy_.front().second) {
130 ++first_gap_; 130 ++first_gap_;
131 packets_entropy_.pop_front(); 131 packets_entropy_.pop_front();
132 } 132 }
133 } 133 }
134 134
135 QuicReceivedPacketManager::QuicReceivedPacketManager(QuicConnectionStats* stats) 135 QuicReceivedPacketManager::QuicReceivedPacketManager(QuicConnectionStats* stats)
136 : peer_least_packet_awaiting_ack_(0), 136 : peer_least_packet_awaiting_ack_(0),
137 time_largest_observed_(QuicTime::Zero()), 137 time_largest_observed_(QuicTime::Zero()),
138 receive_algorithm_(ReceiveAlgorithmInterface::Create()),
139 stats_(stats) { 138 stats_(stats) {
140 ack_frame_.largest_observed = 0; 139 ack_frame_.largest_observed = 0;
141 ack_frame_.entropy_hash = 0; 140 ack_frame_.entropy_hash = 0;
142 } 141 }
143 142
144 QuicReceivedPacketManager::~QuicReceivedPacketManager() {} 143 QuicReceivedPacketManager::~QuicReceivedPacketManager() {}
145 144
146 void QuicReceivedPacketManager::RecordPacketReceived( 145 void QuicReceivedPacketManager::RecordPacketReceived(
147 QuicByteCount bytes, 146 QuicByteCount bytes,
148 const QuicPacketHeader& header, 147 const QuicPacketHeader& header,
(...skipping 22 matching lines...) Expand all
171 stats_->max_time_reordering_us = max(stats_->max_time_reordering_us, 170 stats_->max_time_reordering_us = max(stats_->max_time_reordering_us,
172 reordering_time_us); 171 reordering_time_us);
173 } 172 }
174 if (sequence_number > ack_frame_.largest_observed) { 173 if (sequence_number > ack_frame_.largest_observed) {
175 ack_frame_.largest_observed = sequence_number; 174 ack_frame_.largest_observed = sequence_number;
176 time_largest_observed_ = receipt_time; 175 time_largest_observed_ = receipt_time;
177 } 176 }
178 entropy_tracker_.RecordPacketEntropyHash(sequence_number, 177 entropy_tracker_.RecordPacketEntropyHash(sequence_number,
179 header.entropy_hash); 178 header.entropy_hash);
180 179
181 receive_algorithm_->RecordIncomingPacket(
182 bytes, sequence_number, receipt_time);
183
184 received_packet_times_.push_back( 180 received_packet_times_.push_back(
185 std::make_pair(sequence_number, receipt_time)); 181 std::make_pair(sequence_number, receipt_time));
186 182
187 ack_frame_.revived_packets.erase(sequence_number); 183 ack_frame_.revived_packets.erase(sequence_number);
188 } 184 }
189 185
190 void QuicReceivedPacketManager::RecordPacketRevived( 186 void QuicReceivedPacketManager::RecordPacketRevived(
191 QuicPacketSequenceNumber sequence_number) { 187 QuicPacketSequenceNumber sequence_number) {
192 LOG_IF(DFATAL, !IsAwaitingPacket(sequence_number)); 188 LOG_IF(DFATAL, !IsAwaitingPacket(sequence_number));
193 ack_frame_.revived_packets.insert(sequence_number); 189 ack_frame_.revived_packets.insert(sequence_number);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 226
231 // Ensure the delta is zero if approximate now is "in the past". 227 // Ensure the delta is zero if approximate now is "in the past".
232 ack_frame->delta_time_largest_observed = 228 ack_frame->delta_time_largest_observed =
233 approximate_now < time_largest_observed_ ? 229 approximate_now < time_largest_observed_ ?
234 QuicTime::Delta::Zero() : 230 QuicTime::Delta::Zero() :
235 approximate_now.Subtract(time_largest_observed_); 231 approximate_now.Subtract(time_largest_observed_);
236 232
237 // Remove all packets that are too far from largest_observed to express. 233 // Remove all packets that are too far from largest_observed to express.
238 received_packet_times_.remove_if(isTooLarge(ack_frame_.largest_observed)); 234 received_packet_times_.remove_if(isTooLarge(ack_frame_.largest_observed));
239 235
240 ack_frame->received_packet_times = received_packet_times_; 236 ack_frame->received_packet_times.clear();
241 received_packet_times_.clear(); 237 ack_frame->received_packet_times.swap(received_packet_times_);
242 } 238 }
243 239
244 QuicPacketEntropyHash QuicReceivedPacketManager::EntropyHash( 240 QuicPacketEntropyHash QuicReceivedPacketManager::EntropyHash(
245 QuicPacketSequenceNumber sequence_number) const { 241 QuicPacketSequenceNumber sequence_number) const {
246 return entropy_tracker_.EntropyHash(sequence_number); 242 return entropy_tracker_.EntropyHash(sequence_number);
247 } 243 }
248 244
249 bool QuicReceivedPacketManager::DontWaitForPacketsBefore( 245 bool QuicReceivedPacketManager::DontWaitForPacketsBefore(
250 QuicPacketSequenceNumber least_unacked) { 246 QuicPacketSequenceNumber least_unacked) {
251 ack_frame_.revived_packets.erase( 247 ack_frame_.revived_packets.erase(
(...skipping 30 matching lines...) Expand all
282 return !ack_frame_.missing_packets.empty() && 278 return !ack_frame_.missing_packets.empty() &&
283 (ack_frame_.largest_observed - 279 (ack_frame_.largest_observed -
284 *ack_frame_.missing_packets.rbegin()) <= kMaxPacketsAfterNewMissing; 280 *ack_frame_.missing_packets.rbegin()) <= kMaxPacketsAfterNewMissing;
285 } 281 }
286 282
287 size_t QuicReceivedPacketManager::NumTrackedPackets() const { 283 size_t QuicReceivedPacketManager::NumTrackedPackets() const {
288 return entropy_tracker_.size(); 284 return entropy_tracker_.size();
289 } 285 }
290 286
291 } // namespace net 287 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_received_packet_manager.h ('k') | net/quic/quic_sent_packet_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698