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

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

Issue 493183002: Move least_packet_awaited_by_peer_ from QuicReceivedPacketManager to (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@Remove_timestamp_receiver_73627146
Patch Set: Created 6 years, 4 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.h » ('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 "base/logging.h" 7 #include "base/logging.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "net/base/linked_hash_map.h" 9 #include "net/base/linked_hash_map.h"
10 #include "net/quic/quic_connection_stats.h" 10 #include "net/quic/quic_connection_stats.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 break; 122 break;
123 } 123 }
124 packets_entropy_.erase(it); 124 packets_entropy_.erase(it);
125 ++first_gap_; 125 ++first_gap_;
126 } 126 }
127 } 127 }
128 128
129 QuicReceivedPacketManager::QuicReceivedPacketManager( 129 QuicReceivedPacketManager::QuicReceivedPacketManager(
130 CongestionFeedbackType congestion_type, 130 CongestionFeedbackType congestion_type,
131 QuicConnectionStats* stats) 131 QuicConnectionStats* stats)
132 : peer_largest_observed_packet_(0), 132 : peer_least_packet_awaiting_ack_(0),
133 least_packet_awaited_by_peer_(1),
134 peer_least_packet_awaiting_ack_(0),
135 time_largest_observed_(QuicTime::Zero()), 133 time_largest_observed_(QuicTime::Zero()),
136 receive_algorithm_(ReceiveAlgorithmInterface::Create(congestion_type)), 134 receive_algorithm_(ReceiveAlgorithmInterface::Create(congestion_type)),
137 stats_(stats) { 135 stats_(stats) {
138 ack_frame_.largest_observed = 0; 136 ack_frame_.largest_observed = 0;
139 ack_frame_.entropy_hash = 0; 137 ack_frame_.entropy_hash = 0;
140 } 138 }
141 139
142 QuicReceivedPacketManager::~QuicReceivedPacketManager() {} 140 QuicReceivedPacketManager::~QuicReceivedPacketManager() {}
143 141
144 void QuicReceivedPacketManager::RecordPacketReceived( 142 void QuicReceivedPacketManager::RecordPacketReceived(
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 bool QuicReceivedPacketManager::GenerateCongestionFeedback( 220 bool QuicReceivedPacketManager::GenerateCongestionFeedback(
223 QuicCongestionFeedbackFrame* feedback) { 221 QuicCongestionFeedbackFrame* feedback) {
224 return receive_algorithm_->GenerateCongestionFeedback(feedback); 222 return receive_algorithm_->GenerateCongestionFeedback(feedback);
225 } 223 }
226 224
227 QuicPacketEntropyHash QuicReceivedPacketManager::EntropyHash( 225 QuicPacketEntropyHash QuicReceivedPacketManager::EntropyHash(
228 QuicPacketSequenceNumber sequence_number) const { 226 QuicPacketSequenceNumber sequence_number) const {
229 return entropy_tracker_.EntropyHash(sequence_number); 227 return entropy_tracker_.EntropyHash(sequence_number);
230 } 228 }
231 229
232 void QuicReceivedPacketManager::UpdatePacketInformationReceivedByPeer(
233 const QuicAckFrame& ack_frame) {
234 // ValidateAck should fail if largest_observed ever shrinks.
235 DCHECK_LE(peer_largest_observed_packet_, ack_frame.largest_observed);
236 peer_largest_observed_packet_ = ack_frame.largest_observed;
237
238 if (ack_frame.missing_packets.empty()) {
239 least_packet_awaited_by_peer_ = peer_largest_observed_packet_ + 1;
240 } else {
241 least_packet_awaited_by_peer_ = *(ack_frame.missing_packets.begin());
242 }
243 }
244
245 bool QuicReceivedPacketManager::DontWaitForPacketsBefore( 230 bool QuicReceivedPacketManager::DontWaitForPacketsBefore(
246 QuicPacketSequenceNumber least_unacked) { 231 QuicPacketSequenceNumber least_unacked) {
247 ack_frame_.revived_packets.erase( 232 ack_frame_.revived_packets.erase(
248 ack_frame_.revived_packets.begin(), 233 ack_frame_.revived_packets.begin(),
249 ack_frame_.revived_packets.lower_bound(least_unacked)); 234 ack_frame_.revived_packets.lower_bound(least_unacked));
250 size_t missing_packets_count = ack_frame_.missing_packets.size(); 235 size_t missing_packets_count = ack_frame_.missing_packets.size();
251 ack_frame_.missing_packets.erase( 236 ack_frame_.missing_packets.erase(
252 ack_frame_.missing_packets.begin(), 237 ack_frame_.missing_packets.begin(),
253 ack_frame_.missing_packets.lower_bound(least_unacked)); 238 ack_frame_.missing_packets.lower_bound(least_unacked));
254 return missing_packets_count != ack_frame_.missing_packets.size(); 239 return missing_packets_count != ack_frame_.missing_packets.size();
(...skipping 23 matching lines...) Expand all
278 return !ack_frame_.missing_packets.empty(); 263 return !ack_frame_.missing_packets.empty();
279 } 264 }
280 265
281 bool QuicReceivedPacketManager::HasNewMissingPackets() { 266 bool QuicReceivedPacketManager::HasNewMissingPackets() {
282 return HasMissingPackets() && 267 return HasMissingPackets() &&
283 (ack_frame_.largest_observed - 268 (ack_frame_.largest_observed -
284 *ack_frame_.missing_packets.rbegin()) <= kMaxPacketsAfterNewMissing; 269 *ack_frame_.missing_packets.rbegin()) <= kMaxPacketsAfterNewMissing;
285 } 270 }
286 271
287 } // namespace net 272 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_received_packet_manager.h ('k') | net/quic/quic_sent_packet_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698