OLD | NEW |
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 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 sequence_number); | 157 sequence_number); |
158 | 158 |
159 if (ack_frame_.largest_observed > sequence_number) { | 159 if (ack_frame_.largest_observed > sequence_number) { |
160 // We've gotten one of the out of order packets - remove it from our | 160 // We've gotten one of the out of order packets - remove it from our |
161 // "missing packets" list. | 161 // "missing packets" list. |
162 DVLOG(1) << "Removing " << sequence_number << " from missing list"; | 162 DVLOG(1) << "Removing " << sequence_number << " from missing list"; |
163 ack_frame_.missing_packets.erase(sequence_number); | 163 ack_frame_.missing_packets.erase(sequence_number); |
164 | 164 |
165 // Record how out of order stats. | 165 // Record how out of order stats. |
166 ++stats_->packets_reordered; | 166 ++stats_->packets_reordered; |
167 uint32 sequence_gap = ack_frame_.largest_observed - sequence_number; | |
168 stats_->max_sequence_reordering = | 167 stats_->max_sequence_reordering = |
169 max(stats_->max_sequence_reordering, sequence_gap); | 168 max(stats_->max_sequence_reordering, |
| 169 ack_frame_.largest_observed - sequence_number); |
170 int64 reordering_time_us = | 170 int64 reordering_time_us = |
171 receipt_time.Subtract(time_largest_observed_).ToMicroseconds(); | 171 receipt_time.Subtract(time_largest_observed_).ToMicroseconds(); |
172 stats_->max_time_reordering_us = max(stats_->max_time_reordering_us, | 172 stats_->max_time_reordering_us = max(stats_->max_time_reordering_us, |
173 reordering_time_us); | 173 reordering_time_us); |
174 } | 174 } |
175 if (sequence_number > ack_frame_.largest_observed) { | 175 if (sequence_number > ack_frame_.largest_observed) { |
176 ack_frame_.largest_observed = sequence_number; | 176 ack_frame_.largest_observed = sequence_number; |
177 time_largest_observed_ = receipt_time; | 177 time_largest_observed_ = receipt_time; |
178 } | 178 } |
179 entropy_tracker_.RecordPacketEntropyHash(sequence_number, | 179 entropy_tracker_.RecordPacketEntropyHash(sequence_number, |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
288 return !ack_frame_.missing_packets.empty() && | 288 return !ack_frame_.missing_packets.empty() && |
289 (ack_frame_.largest_observed - | 289 (ack_frame_.largest_observed - |
290 *ack_frame_.missing_packets.rbegin()) <= kMaxPacketsAfterNewMissing; | 290 *ack_frame_.missing_packets.rbegin()) <= kMaxPacketsAfterNewMissing; |
291 } | 291 } |
292 | 292 |
293 size_t QuicReceivedPacketManager::NumTrackedPackets() const { | 293 size_t QuicReceivedPacketManager::NumTrackedPackets() const { |
294 return entropy_tracker_.size(); | 294 return entropy_tracker_.size(); |
295 } | 295 } |
296 | 296 |
297 } // namespace net | 297 } // namespace net |
OLD | NEW |