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

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

Issue 2132623002: Landing Recent QUIC changes until 2016-07-02 02:45 UTC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removing comment about RPCs Created 4 years, 5 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_test.cc ('k') | net/quic/quic_received_packet_manager_test.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 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 DVLOG(1) << "Removing " << packet_number << " from missing list"; 168 DVLOG(1) << "Removing " << packet_number << " from missing list";
169 ack_frame_.packets.Remove(packet_number); 169 ack_frame_.packets.Remove(packet_number);
170 } 170 }
171 171
172 // Record how out of order stats. 172 // Record how out of order stats.
173 ++stats_->packets_reordered; 173 ++stats_->packets_reordered;
174 stats_->max_sequence_reordering = 174 stats_->max_sequence_reordering =
175 max(stats_->max_sequence_reordering, 175 max(stats_->max_sequence_reordering,
176 ack_frame_.largest_observed - packet_number); 176 ack_frame_.largest_observed - packet_number);
177 int64_t reordering_time_us = 177 int64_t reordering_time_us =
178 receipt_time.Subtract(time_largest_observed_).ToMicroseconds(); 178 (receipt_time - time_largest_observed_).ToMicroseconds();
179 stats_->max_time_reordering_us = 179 stats_->max_time_reordering_us =
180 max(stats_->max_time_reordering_us, reordering_time_us); 180 max(stats_->max_time_reordering_us, reordering_time_us);
181 } 181 }
182 if (packet_number > ack_frame_.largest_observed) { 182 if (packet_number > ack_frame_.largest_observed) {
183 ack_frame_.largest_observed = packet_number; 183 ack_frame_.largest_observed = packet_number;
184 time_largest_observed_ = receipt_time; 184 time_largest_observed_ = receipt_time;
185 } 185 }
186 if (ack_frame_.missing) { 186 if (ack_frame_.missing) {
187 entropy_tracker_.RecordPacketEntropyHash(packet_number, 187 entropy_tracker_.RecordPacketEntropyHash(packet_number,
188 header.entropy_hash); 188 header.entropy_hash);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 ack_frame_updated_ = false; 224 ack_frame_updated_ = false;
225 if (ack_frame_.missing) { 225 if (ack_frame_.missing) {
226 ack_frame_.entropy_hash = EntropyHash(ack_frame_.largest_observed); 226 ack_frame_.entropy_hash = EntropyHash(ack_frame_.largest_observed);
227 } 227 }
228 228
229 if (time_largest_observed_ == QuicTime::Zero()) { 229 if (time_largest_observed_ == QuicTime::Zero()) {
230 // We have received no packets. 230 // We have received no packets.
231 ack_frame_.ack_delay_time = QuicTime::Delta::Infinite(); 231 ack_frame_.ack_delay_time = QuicTime::Delta::Infinite();
232 } else { 232 } else {
233 // Ensure the delta is zero if approximate now is "in the past". 233 // Ensure the delta is zero if approximate now is "in the past".
234 ack_frame_.ack_delay_time = 234 ack_frame_.ack_delay_time = approximate_now < time_largest_observed_
235 approximate_now < time_largest_observed_ 235 ? QuicTime::Delta::Zero()
236 ? QuicTime::Delta::Zero() 236 : approximate_now - time_largest_observed_;
237 : approximate_now.Subtract(time_largest_observed_);
238 } 237 }
239 238
240 // Clear all packet times if any are too far from largest observed. 239 // Clear all packet times if any are too far from largest observed.
241 // It's expected this is extremely rare. 240 // It's expected this is extremely rare.
242 for (PacketTimeVector::iterator it = ack_frame_.received_packet_times.begin(); 241 for (PacketTimeVector::iterator it = ack_frame_.received_packet_times.begin();
243 it != ack_frame_.received_packet_times.end();) { 242 it != ack_frame_.received_packet_times.end();) {
244 if (ack_frame_.largest_observed - it->first >= 243 if (ack_frame_.largest_observed - it->first >=
245 numeric_limits<uint8_t>::max()) { 244 numeric_limits<uint8_t>::max()) {
246 it = ack_frame_.received_packet_times.erase(it); 245 it = ack_frame_.received_packet_times.erase(it);
247 } else { 246 } else {
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 313
315 void QuicReceivedPacketManager::SetVersion(QuicVersion version) { 314 void QuicReceivedPacketManager::SetVersion(QuicVersion version) {
316 ack_frame_.missing = version <= QUIC_VERSION_33; 315 ack_frame_.missing = version <= QUIC_VERSION_33;
317 } 316 }
318 317
319 bool QuicReceivedPacketManager::ack_frame_updated() const { 318 bool QuicReceivedPacketManager::ack_frame_updated() const {
320 return ack_frame_updated_; 319 return ack_frame_updated_;
321 } 320 }
322 321
323 } // namespace net 322 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_protocol_test.cc ('k') | net/quic/quic_received_packet_manager_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698