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

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

Issue 968233004: Land Recent QUIC Changes until 03/02/2015. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@cleanup
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_time.cc ('k') | net/quic/quic_unacked_packet_map.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 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_time_wait_list_manager.h" 5 #include "net/quic/quic_time_wait_list_manager.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 8
9 #include "base/containers/hash_tables.h" 9 #include "base/containers/hash_tables.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 QuicEncryptedPacket* close_packet) { 106 QuicEncryptedPacket* close_packet) {
107 int num_packets = 0; 107 int num_packets = 0;
108 ConnectionIdMap::iterator it = connection_id_map_.find(connection_id); 108 ConnectionIdMap::iterator it = connection_id_map_.find(connection_id);
109 const bool new_connection_id = it == connection_id_map_.end(); 109 const bool new_connection_id = it == connection_id_map_.end();
110 if (!new_connection_id) { // Replace record if it is reinserted. 110 if (!new_connection_id) { // Replace record if it is reinserted.
111 num_packets = it->second.num_packets; 111 num_packets = it->second.num_packets;
112 delete it->second.close_packet; 112 delete it->second.close_packet;
113 connection_id_map_.erase(it); 113 connection_id_map_.erase(it);
114 } 114 }
115 TrimTimeWaitListIfNeeded(); 115 TrimTimeWaitListIfNeeded();
116 if (FLAGS_quic_limit_time_wait_list_size) { 116 DCHECK_LT(num_connections(),
117 DCHECK_LT(num_connections(), 117 static_cast<size_t>(FLAGS_quic_time_wait_list_max_connections));
118 static_cast<size_t>(FLAGS_quic_time_wait_list_max_connections));
119 }
120 ConnectionIdData data(num_packets, 118 ConnectionIdData data(num_packets,
121 version, 119 version,
122 helper_->GetClock()->ApproximateNow(), 120 helper_->GetClock()->ApproximateNow(),
123 close_packet); 121 close_packet);
124 connection_id_map_.insert(std::make_pair(connection_id, data)); 122 connection_id_map_.insert(std::make_pair(connection_id, data));
125 if (new_connection_id) { 123 if (new_connection_id) {
126 visitor_->OnConnectionAddedToTimeWaitList(connection_id); 124 visitor_->OnConnectionAddedToTimeWaitList(connection_id);
127 } 125 }
128 } 126 }
129 127
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 const QuicConnectionId connection_id = it->first; 282 const QuicConnectionId connection_id = it->first;
285 delete it->second.close_packet; 283 delete it->second.close_packet;
286 connection_id_map_.erase(it); 284 connection_id_map_.erase(it);
287 visitor_->OnConnectionRemovedFromTimeWaitList(connection_id); 285 visitor_->OnConnectionRemovedFromTimeWaitList(connection_id);
288 return true; 286 return true;
289 } 287 }
290 288
291 void QuicTimeWaitListManager::CleanUpOldConnectionIds() { 289 void QuicTimeWaitListManager::CleanUpOldConnectionIds() {
292 QuicTime now = helper_->GetClock()->ApproximateNow(); 290 QuicTime now = helper_->GetClock()->ApproximateNow();
293 QuicTime expiration = now.Subtract(kTimeWaitPeriod_); 291 QuicTime expiration = now.Subtract(kTimeWaitPeriod_);
294 if (FLAGS_quic_limit_time_wait_list_size) { 292
295 while (MaybeExpireOldestConnection(expiration)) { 293 while (MaybeExpireOldestConnection(expiration)) {
296 }
297 } else {
298 while (!connection_id_map_.empty()) {
299 ConnectionIdMap::iterator it = connection_id_map_.begin();
300 QuicTime oldest_connection_id = it->second.time_added;
301 if (now.Subtract(oldest_connection_id) < kTimeWaitPeriod_) {
302 break;
303 }
304 const QuicConnectionId connection_id = it->first;
305 // This connection_id has lived its age, retire it now.
306 delete it->second.close_packet;
307 connection_id_map_.erase(it);
308 visitor_->OnConnectionRemovedFromTimeWaitList(connection_id);
309 }
310 } 294 }
311 295
312 SetConnectionIdCleanUpAlarm(); 296 SetConnectionIdCleanUpAlarm();
313 } 297 }
314 298
315 void QuicTimeWaitListManager::TrimTimeWaitListIfNeeded() { 299 void QuicTimeWaitListManager::TrimTimeWaitListIfNeeded() {
316 if (FLAGS_quic_limit_time_wait_list_size) { 300 if (FLAGS_quic_time_wait_list_max_connections < 0) {
317 if (FLAGS_quic_time_wait_list_max_connections < 0) { 301 return;
318 return; 302 }
319 } 303 while (num_connections() >=
320 while (num_connections() >= 304 static_cast<size_t>(FLAGS_quic_time_wait_list_max_connections)) {
321 static_cast<size_t>(FLAGS_quic_time_wait_list_max_connections)) { 305 MaybeExpireOldestConnection(QuicTime::Infinite());
322 MaybeExpireOldestConnection(QuicTime::Infinite());
323 }
324 } 306 }
325 } 307 }
326 308
327 } // namespace net 309 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_time.cc ('k') | net/quic/quic_unacked_packet_map.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698