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

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

Issue 1029463003: Improve tests. Correct things clang_tidy complains about. Make (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
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_wait_list_manager.h ('k') | net/tools/quic/quic_dispatcher_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 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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 74
75 DISALLOW_COPY_AND_ASSIGN(QueuedPacket); 75 DISALLOW_COPY_AND_ASSIGN(QueuedPacket);
76 }; 76 };
77 77
78 QuicTimeWaitListManager::QuicTimeWaitListManager( 78 QuicTimeWaitListManager::QuicTimeWaitListManager(
79 QuicPacketWriter* writer, 79 QuicPacketWriter* writer,
80 QuicServerSessionVisitor* visitor, 80 QuicServerSessionVisitor* visitor,
81 QuicConnectionHelperInterface* helper, 81 QuicConnectionHelperInterface* helper,
82 const QuicVersionVector& supported_versions) 82 const QuicVersionVector& supported_versions)
83 : helper_(helper), 83 : helper_(helper),
84 kTimeWaitPeriod_( 84 time_wait_period_(
85 QuicTime::Delta::FromSeconds(FLAGS_quic_time_wait_list_seconds)), 85 QuicTime::Delta::FromSeconds(FLAGS_quic_time_wait_list_seconds)),
86 connection_id_clean_up_alarm_( 86 connection_id_clean_up_alarm_(
87 helper_->CreateAlarm(new ConnectionIdCleanUpAlarm(this))), 87 helper_->CreateAlarm(new ConnectionIdCleanUpAlarm(this))),
88 writer_(writer), 88 writer_(writer),
89 visitor_(visitor) { 89 visitor_(visitor) {
90 SetConnectionIdCleanUpAlarm(); 90 SetConnectionIdCleanUpAlarm();
91 } 91 }
92 92
93 QuicTimeWaitListManager::~QuicTimeWaitListManager() { 93 QuicTimeWaitListManager::~QuicTimeWaitListManager() {
94 connection_id_clean_up_alarm_->Cancel(); 94 connection_id_clean_up_alarm_->Cancel();
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 return true; 247 return true;
248 } 248 }
249 249
250 void QuicTimeWaitListManager::SetConnectionIdCleanUpAlarm() { 250 void QuicTimeWaitListManager::SetConnectionIdCleanUpAlarm() {
251 connection_id_clean_up_alarm_->Cancel(); 251 connection_id_clean_up_alarm_->Cancel();
252 QuicTime now = helper_->GetClock()->ApproximateNow(); 252 QuicTime now = helper_->GetClock()->ApproximateNow();
253 QuicTime next_alarm_time = now; 253 QuicTime next_alarm_time = now;
254 if (!connection_id_map_.empty()) { 254 if (!connection_id_map_.empty()) {
255 QuicTime oldest_connection_id = 255 QuicTime oldest_connection_id =
256 connection_id_map_.begin()->second.time_added; 256 connection_id_map_.begin()->second.time_added;
257 if (now.Subtract(oldest_connection_id) < kTimeWaitPeriod_) { 257 if (now.Subtract(oldest_connection_id) < time_wait_period_) {
258 next_alarm_time = oldest_connection_id.Add(kTimeWaitPeriod_); 258 next_alarm_time = oldest_connection_id.Add(time_wait_period_);
259 } else { 259 } else {
260 LOG(ERROR) << "ConnectionId lingered for longer than kTimeWaitPeriod"; 260 LOG(ERROR) << "ConnectionId lingered for longer than kTimeWaitPeriod";
261 } 261 }
262 } else { 262 } else {
263 // No connection_ids added so none will expire before kTimeWaitPeriod_. 263 // No connection_ids added so none will expire before time_wait_period_.
264 next_alarm_time = now.Add(kTimeWaitPeriod_); 264 next_alarm_time = now.Add(time_wait_period_);
265 } 265 }
266 266
267 connection_id_clean_up_alarm_->Set(next_alarm_time); 267 connection_id_clean_up_alarm_->Set(next_alarm_time);
268 } 268 }
269 269
270 bool QuicTimeWaitListManager::MaybeExpireOldestConnection( 270 bool QuicTimeWaitListManager::MaybeExpireOldestConnection(
271 QuicTime expiration_time) { 271 QuicTime expiration_time) {
272 if (connection_id_map_.empty()) { 272 if (connection_id_map_.empty()) {
273 return false; 273 return false;
274 } 274 }
275 ConnectionIdMap::iterator it = connection_id_map_.begin(); 275 ConnectionIdMap::iterator it = connection_id_map_.begin();
276 QuicTime oldest_connection_id_time = it->second.time_added; 276 QuicTime oldest_connection_id_time = it->second.time_added;
277 if (oldest_connection_id_time > expiration_time) { 277 if (oldest_connection_id_time > expiration_time) {
278 // Too recent, don't retire. 278 // Too recent, don't retire.
279 return false; 279 return false;
280 } 280 }
281 // This connection_id has lived its age, retire it now. 281 // This connection_id has lived its age, retire it now.
282 const QuicConnectionId connection_id = it->first; 282 const QuicConnectionId connection_id = it->first;
283 delete it->second.close_packet; 283 delete it->second.close_packet;
284 connection_id_map_.erase(it); 284 connection_id_map_.erase(it);
285 visitor_->OnConnectionRemovedFromTimeWaitList(connection_id); 285 visitor_->OnConnectionRemovedFromTimeWaitList(connection_id);
286 return true; 286 return true;
287 } 287 }
288 288
289 void QuicTimeWaitListManager::CleanUpOldConnectionIds() { 289 void QuicTimeWaitListManager::CleanUpOldConnectionIds() {
290 QuicTime now = helper_->GetClock()->ApproximateNow(); 290 QuicTime now = helper_->GetClock()->ApproximateNow();
291 QuicTime expiration = now.Subtract(kTimeWaitPeriod_); 291 QuicTime expiration = now.Subtract(time_wait_period_);
292 292
293 while (MaybeExpireOldestConnection(expiration)) { 293 while (MaybeExpireOldestConnection(expiration)) {
294 } 294 }
295 295
296 SetConnectionIdCleanUpAlarm(); 296 SetConnectionIdCleanUpAlarm();
297 } 297 }
298 298
299 void QuicTimeWaitListManager::TrimTimeWaitListIfNeeded() { 299 void QuicTimeWaitListManager::TrimTimeWaitListIfNeeded() {
300 if (FLAGS_quic_time_wait_list_max_connections < 0) { 300 if (FLAGS_quic_time_wait_list_max_connections < 0) {
301 return; 301 return;
302 } 302 }
303 while (num_connections() >= 303 while (num_connections() >=
304 static_cast<size_t>(FLAGS_quic_time_wait_list_max_connections)) { 304 static_cast<size_t>(FLAGS_quic_time_wait_list_max_connections)) {
305 MaybeExpireOldestConnection(QuicTime::Infinite()); 305 MaybeExpireOldestConnection(QuicTime::Infinite());
306 } 306 }
307 } 307 }
308 308
309 } // namespace net 309 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_time_wait_list_manager.h ('k') | net/tools/quic/quic_dispatcher_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698