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

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

Issue 839143002: Roll Chrome into Mojo. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Rebase Created 5 years, 11 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/tools/quic/quic_time_wait_list_manager.h" 5 #include "net/tools/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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 it != connection_id_map_.end(); 107 it != connection_id_map_.end();
108 ++it) { 108 ++it) {
109 delete it->second.close_packet; 109 delete it->second.close_packet;
110 } 110 }
111 } 111 }
112 112
113 void QuicTimeWaitListManager::AddConnectionIdToTimeWait( 113 void QuicTimeWaitListManager::AddConnectionIdToTimeWait(
114 QuicConnectionId connection_id, 114 QuicConnectionId connection_id,
115 QuicVersion version, 115 QuicVersion version,
116 QuicEncryptedPacket* close_packet) { 116 QuicEncryptedPacket* close_packet) {
117 DVLOG(1) << "Adding " << connection_id << " to the time wait list.";
118 int num_packets = 0; 117 int num_packets = 0;
119 ConnectionIdMap::iterator it = connection_id_map_.find(connection_id); 118 ConnectionIdMap::iterator it = connection_id_map_.find(connection_id);
120 if (it != connection_id_map_.end()) { // Replace record if it is reinserted. 119 const bool new_connection_id = it == connection_id_map_.end();
120 if (!new_connection_id) { // Replace record if it is reinserted.
121 num_packets = it->second.num_packets; 121 num_packets = it->second.num_packets;
122 delete it->second.close_packet; 122 delete it->second.close_packet;
123 connection_id_map_.erase(it); 123 connection_id_map_.erase(it);
124 } 124 }
125 ConnectionIdData data(num_packets, 125 ConnectionIdData data(num_packets,
126 version, 126 version,
127 clock_.ApproximateNow(), 127 clock_.ApproximateNow(),
128 close_packet); 128 close_packet);
129 connection_id_map_.insert(make_pair(connection_id, data)); 129 connection_id_map_.insert(make_pair(connection_id, data));
130 if (new_connection_id) {
131 visitor_->OnConnectionAddedToTimeWaitList(connection_id);
132 }
130 } 133 }
131 134
132 bool QuicTimeWaitListManager::IsConnectionIdInTimeWait( 135 bool QuicTimeWaitListManager::IsConnectionIdInTimeWait(
133 QuicConnectionId connection_id) const { 136 QuicConnectionId connection_id) const {
134 return ContainsKey(connection_id_map_, connection_id); 137 return ContainsKey(connection_id_map_, connection_id);
135 } 138 }
136 139
137 QuicVersion QuicTimeWaitListManager::GetQuicVersionFromConnectionId( 140 QuicVersion QuicTimeWaitListManager::GetQuicVersionFromConnectionId(
138 QuicConnectionId connection_id) { 141 QuicConnectionId connection_id) {
139 ConnectionIdMap::iterator it = connection_id_map_.find(connection_id); 142 ConnectionIdMap::iterator it = connection_id_map_.find(connection_id);
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 } 279 }
277 280
278 void QuicTimeWaitListManager::CleanUpOldConnectionIds() { 281 void QuicTimeWaitListManager::CleanUpOldConnectionIds() {
279 QuicTime now = clock_.ApproximateNow(); 282 QuicTime now = clock_.ApproximateNow();
280 while (!connection_id_map_.empty()) { 283 while (!connection_id_map_.empty()) {
281 ConnectionIdMap::iterator it = connection_id_map_.begin(); 284 ConnectionIdMap::iterator it = connection_id_map_.begin();
282 QuicTime oldest_connection_id = it->second.time_added; 285 QuicTime oldest_connection_id = it->second.time_added;
283 if (now.Subtract(oldest_connection_id) < kTimeWaitPeriod_) { 286 if (now.Subtract(oldest_connection_id) < kTimeWaitPeriod_) {
284 break; 287 break;
285 } 288 }
289 const QuicConnectionId connection_id = it->first;
286 // This connection_id has lived its age, retire it now. 290 // This connection_id has lived its age, retire it now.
287 DVLOG(1) << "Retiring " << it->first << " from the time-wait state.";
288 delete it->second.close_packet; 291 delete it->second.close_packet;
289 connection_id_map_.erase(it); 292 connection_id_map_.erase(it);
293 visitor_->OnConnectionRemovedFromTimeWaitList(connection_id);
290 } 294 }
291 SetConnectionIdCleanUpAlarm(); 295 SetConnectionIdCleanUpAlarm();
292 } 296 }
293 297
294 } // namespace tools 298 } // namespace tools
295 } // namespace net 299 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/quic/quic_time_wait_list_manager.h ('k') | net/tools/quic/quic_time_wait_list_manager_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698