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

Side by Side Diff: net/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
« no previous file with comments | « net/quic/quic_time_wait_list_manager.h ('k') | net/quic/reliable_quic_stream.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 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 it != connection_id_map_.end(); 105 it != connection_id_map_.end();
106 ++it) { 106 ++it) {
107 delete it->second.close_packet; 107 delete it->second.close_packet;
108 } 108 }
109 } 109 }
110 110
111 void QuicTimeWaitListManager::AddConnectionIdToTimeWait( 111 void QuicTimeWaitListManager::AddConnectionIdToTimeWait(
112 QuicConnectionId connection_id, 112 QuicConnectionId connection_id,
113 QuicVersion version, 113 QuicVersion version,
114 QuicEncryptedPacket* close_packet) { 114 QuicEncryptedPacket* close_packet) {
115 DVLOG(1) << "Adding " << connection_id << " to the time wait list.";
116 int num_packets = 0; 115 int num_packets = 0;
117 ConnectionIdMap::iterator it = connection_id_map_.find(connection_id); 116 ConnectionIdMap::iterator it = connection_id_map_.find(connection_id);
118 if (it != connection_id_map_.end()) { // Replace record if it is reinserted. 117 const bool new_connection_id = it == connection_id_map_.end();
118 if (!new_connection_id) { // Replace record if it is reinserted.
119 num_packets = it->second.num_packets; 119 num_packets = it->second.num_packets;
120 delete it->second.close_packet; 120 delete it->second.close_packet;
121 connection_id_map_.erase(it); 121 connection_id_map_.erase(it);
122 } 122 }
123 ConnectionIdData data(num_packets, 123 ConnectionIdData data(num_packets,
124 version, 124 version,
125 helper_->GetClock()->ApproximateNow(), 125 helper_->GetClock()->ApproximateNow(),
126 close_packet); 126 close_packet);
127 connection_id_map_.insert(make_pair(connection_id, data)); 127 connection_id_map_.insert(make_pair(connection_id, data));
128 if (new_connection_id) {
129 visitor_->OnConnectionAddedToTimeWaitList(connection_id);
130 }
128 } 131 }
129 132
130 bool QuicTimeWaitListManager::IsConnectionIdInTimeWait( 133 bool QuicTimeWaitListManager::IsConnectionIdInTimeWait(
131 QuicConnectionId connection_id) const { 134 QuicConnectionId connection_id) const {
132 return ContainsKey(connection_id_map_, connection_id); 135 return ContainsKey(connection_id_map_, connection_id);
133 } 136 }
134 137
135 QuicVersion QuicTimeWaitListManager::GetQuicVersionFromConnectionId( 138 QuicVersion QuicTimeWaitListManager::GetQuicVersionFromConnectionId(
136 QuicConnectionId connection_id) { 139 QuicConnectionId connection_id) {
137 ConnectionIdMap::iterator it = connection_id_map_.find(connection_id); 140 ConnectionIdMap::iterator it = connection_id_map_.find(connection_id);
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 } 273 }
271 274
272 void QuicTimeWaitListManager::CleanUpOldConnectionIds() { 275 void QuicTimeWaitListManager::CleanUpOldConnectionIds() {
273 QuicTime now = helper_->GetClock()->ApproximateNow(); 276 QuicTime now = helper_->GetClock()->ApproximateNow();
274 while (!connection_id_map_.empty()) { 277 while (!connection_id_map_.empty()) {
275 ConnectionIdMap::iterator it = connection_id_map_.begin(); 278 ConnectionIdMap::iterator it = connection_id_map_.begin();
276 QuicTime oldest_connection_id = it->second.time_added; 279 QuicTime oldest_connection_id = it->second.time_added;
277 if (now.Subtract(oldest_connection_id) < kTimeWaitPeriod_) { 280 if (now.Subtract(oldest_connection_id) < kTimeWaitPeriod_) {
278 break; 281 break;
279 } 282 }
283 const QuicConnectionId connection_id = it->first;
280 // This connection_id has lived its age, retire it now. 284 // This connection_id has lived its age, retire it now.
281 DVLOG(1) << "Retiring " << it->first << " from the time-wait state.";
282 delete it->second.close_packet; 285 delete it->second.close_packet;
283 connection_id_map_.erase(it); 286 connection_id_map_.erase(it);
287 visitor_->OnConnectionRemovedFromTimeWaitList(connection_id);
284 } 288 }
285 SetConnectionIdCleanUpAlarm(); 289 SetConnectionIdCleanUpAlarm();
286 } 290 }
287 291
288 } // namespace net 292 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_time_wait_list_manager.h ('k') | net/quic/reliable_quic_stream.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698