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

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

Issue 1305293004: Notfiy NQE of QUIC RTT (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated with more comments and tests Created 5 years, 3 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/quic/quic_connection.h" 5 #include "net/quic/quic_connection.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 #include <sys/types.h> 8 #include <sys/types.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 TransmissionType transmission_type, 237 TransmissionType transmission_type,
238 QuicPacketNumber original_packet_number) 238 QuicPacketNumber original_packet_number)
239 : serialized_packet(packet), 239 : serialized_packet(packet),
240 encryption_level(level), 240 encryption_level(level),
241 transmission_type(transmission_type), 241 transmission_type(transmission_type),
242 original_packet_number(original_packet_number) {} 242 original_packet_number(original_packet_number) {}
243 243
244 #define ENDPOINT \ 244 #define ENDPOINT \
245 (perspective_ == Perspective::IS_SERVER ? "Server: " : "Client: ") 245 (perspective_ == Perspective::IS_SERVER ? "Server: " : "Client: ")
246 246
247 QuicConnection::QuicConnection(QuicConnectionId connection_id, 247 QuicConnection::QuicConnection(
248 IPEndPoint address, 248 QuicConnectionId connection_id,
249 QuicConnectionHelperInterface* helper, 249 IPEndPoint address,
250 const PacketWriterFactory& writer_factory, 250 QuicConnectionHelperInterface* helper,
251 bool owns_writer, 251 const PacketWriterFactory& writer_factory,
252 Perspective perspective, 252 bool owns_writer,
253 bool is_secure, 253 Perspective perspective,
254 const QuicVersionVector& supported_versions) 254 bool is_secure,
255 const QuicVersionVector& supported_versions,
256 scoped_ptr<SocketPerformanceWatcher> socket_performance_watcher)
255 : framer_(supported_versions, 257 : framer_(supported_versions,
256 helper->GetClock()->ApproximateNow(), 258 helper->GetClock()->ApproximateNow(),
257 perspective), 259 perspective),
258 helper_(helper), 260 helper_(helper),
259 writer_(writer_factory.Create(this)), 261 writer_(writer_factory.Create(this)),
260 owns_writer_(owns_writer), 262 owns_writer_(owns_writer),
261 encryption_level_(ENCRYPTION_NONE), 263 encryption_level_(ENCRYPTION_NONE),
262 has_forward_secure_encrypter_(false), 264 has_forward_secure_encrypter_(false),
263 first_required_forward_secure_packet_(0), 265 first_required_forward_secure_packet_(0),
264 clock_(helper->GetClock()), 266 clock_(helper->GetClock()),
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 self_ip_changed_(false), 315 self_ip_changed_(false),
314 self_port_changed_(false), 316 self_port_changed_(false),
315 can_truncate_connection_ids_(true), 317 can_truncate_connection_ids_(true),
316 is_secure_(is_secure), 318 is_secure_(is_secure),
317 mtu_discovery_target_(0), 319 mtu_discovery_target_(0),
318 mtu_probe_count_(0), 320 mtu_probe_count_(0),
319 packets_between_mtu_probes_(kPacketsBetweenMtuProbesBase), 321 packets_between_mtu_probes_(kPacketsBetweenMtuProbesBase),
320 next_mtu_probe_at_(kPacketsBetweenMtuProbesBase), 322 next_mtu_probe_at_(kPacketsBetweenMtuProbesBase),
321 largest_received_packet_size_(0), 323 largest_received_packet_size_(0),
322 goaway_sent_(false), 324 goaway_sent_(false),
323 goaway_received_(false) { 325 goaway_received_(false),
326 socket_performance_watcher_(socket_performance_watcher.Pass()) {
324 DVLOG(1) << ENDPOINT << "Created connection with connection_id: " 327 DVLOG(1) << ENDPOINT << "Created connection with connection_id: "
325 << connection_id; 328 << connection_id;
326 framer_.set_visitor(this); 329 framer_.set_visitor(this);
327 framer_.set_received_entropy_calculator(&received_packet_manager_); 330 framer_.set_received_entropy_calculator(&received_packet_manager_);
328 stats_.connection_creation_time = clock_->ApproximateNow(); 331 stats_.connection_creation_time = clock_->ApproximateNow();
329 sent_packet_manager_.set_network_change_visitor(this); 332 sent_packet_manager_.set_network_change_visitor(this);
330 if (perspective_ == Perspective::IS_SERVER) { 333 if (perspective_ == Perspective::IS_SERVER) {
331 set_max_packet_length(kDefaultServerMaxPacketSize); 334 set_max_packet_length(kDefaultServerMaxPacketSize);
332 } 335 }
333 } 336 }
(...skipping 1047 matching lines...) Expand 10 before | Expand all | Expand 10 after
1381 DVLOG(1) << ENDPOINT << "Unable to process packet. Last packet processed: " 1384 DVLOG(1) << ENDPOINT << "Unable to process packet. Last packet processed: "
1382 << last_header_.packet_packet_number; 1385 << last_header_.packet_packet_number;
1383 return; 1386 return;
1384 } 1387 }
1385 1388
1386 ++stats_.packets_processed; 1389 ++stats_.packets_processed;
1387 MaybeProcessUndecryptablePackets(); 1390 MaybeProcessUndecryptablePackets();
1388 MaybeProcessRevivedPacket(); 1391 MaybeProcessRevivedPacket();
1389 MaybeSendInResponseToPacket(); 1392 MaybeSendInResponseToPacket();
1390 SetPingAlarm(); 1393 SetPingAlarm();
1394
1395 // Notify socket performance watcher of the updated RTT value.
1396 if (socket_performance_watcher_) {
1397 socket_performance_watcher_->OnUpdatedRTTAvailable(
1398 base::TimeDelta::FromMicroseconds(sent_packet_manager_.GetRttStats()
1399 ->smoothed_rtt()
1400 .ToMicroseconds()));
1401 }
1391 } 1402 }
1392 1403
1393 void QuicConnection::CheckForAddressMigration( 1404 void QuicConnection::CheckForAddressMigration(
1394 const IPEndPoint& self_address, const IPEndPoint& peer_address) { 1405 const IPEndPoint& self_address, const IPEndPoint& peer_address) {
1395 peer_ip_changed_ = false; 1406 peer_ip_changed_ = false;
1396 peer_port_changed_ = false; 1407 peer_port_changed_ = false;
1397 self_ip_changed_ = false; 1408 self_ip_changed_ = false;
1398 self_port_changed_ = false; 1409 self_port_changed_ = false;
1399 1410
1400 if (peer_address_.address().empty()) { 1411 if (peer_address_.address().empty()) {
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
1723 1734
1724 if (result.status == WRITE_STATUS_ERROR) { 1735 if (result.status == WRITE_STATUS_ERROR) {
1725 OnWriteError(result.error_code); 1736 OnWriteError(result.error_code);
1726 DLOG(ERROR) << ENDPOINT << "failed writing " << encrypted->length() 1737 DLOG(ERROR) << ENDPOINT << "failed writing " << encrypted->length()
1727 << " bytes " 1738 << " bytes "
1728 << " from host " << self_address().ToStringWithoutPort() 1739 << " from host " << self_address().ToStringWithoutPort()
1729 << " to address " << peer_address().ToString(); 1740 << " to address " << peer_address().ToString();
1730 return false; 1741 return false;
1731 } 1742 }
1732 1743
1744 // Notify socket performance watcher of the updated RTT value.
1745 if (socket_performance_watcher_) {
1746 socket_performance_watcher_->OnUpdatedRTTAvailable(
1747 base::TimeDelta::FromMicroseconds(sent_packet_manager_.GetRttStats()
1748 ->smoothed_rtt()
1749 .ToMicroseconds()));
1750 }
1733 return true; 1751 return true;
1734 } 1752 }
1735 1753
1736 bool QuicConnection::ShouldDiscardPacket(const QueuedPacket& packet) { 1754 bool QuicConnection::ShouldDiscardPacket(const QueuedPacket& packet) {
1737 if (!connected_) { 1755 if (!connected_) {
1738 DVLOG(1) << ENDPOINT 1756 DVLOG(1) << ENDPOINT
1739 << "Not sending packet as connection is disconnected."; 1757 << "Not sending packet as connection is disconnected.";
1740 return true; 1758 return true;
1741 } 1759 }
1742 1760
(...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after
2396 packet_number_of_last_sent_packet_ + packets_between_mtu_probes_ + 1; 2414 packet_number_of_last_sent_packet_ + packets_between_mtu_probes_ + 1;
2397 ++mtu_probe_count_; 2415 ++mtu_probe_count_;
2398 2416
2399 DVLOG(2) << "Sending a path MTU discovery packet #" << mtu_probe_count_; 2417 DVLOG(2) << "Sending a path MTU discovery packet #" << mtu_probe_count_;
2400 SendMtuDiscoveryPacket(mtu_discovery_target_); 2418 SendMtuDiscoveryPacket(mtu_discovery_target_);
2401 2419
2402 DCHECK(!mtu_discovery_alarm_->IsSet()); 2420 DCHECK(!mtu_discovery_alarm_->IsSet());
2403 } 2421 }
2404 2422
2405 } // namespace net 2423 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698