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

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

Issue 2706893002: Make QuicFramer unaware of path. Also, send/receive PathClose has no effect. (Closed)
Patch Set: Created 3 years, 10 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/core/quic_connection.h ('k') | net/quic/core/quic_connection_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 (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/core/quic_connection.h" 5 #include "net/quic/core/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 890 matching lines...) Expand 10 before | Expand all | Expand 10 after
901 return connected_; 901 return connected_;
902 } 902 }
903 903
904 bool QuicConnection::OnPathCloseFrame(const QuicPathCloseFrame& frame) { 904 bool QuicConnection::OnPathCloseFrame(const QuicPathCloseFrame& frame) {
905 DCHECK(connected_); 905 DCHECK(connected_);
906 if (debug_visitor_ != nullptr) { 906 if (debug_visitor_ != nullptr) {
907 debug_visitor_->OnPathCloseFrame(frame); 907 debug_visitor_->OnPathCloseFrame(frame);
908 } 908 }
909 QUIC_DLOG(INFO) << ENDPOINT 909 QUIC_DLOG(INFO) << ENDPOINT
910 << "PATH_CLOSE_FRAME received for path: " << frame.path_id; 910 << "PATH_CLOSE_FRAME received for path: " << frame.path_id;
911 OnPathClosed(frame.path_id);
912 return connected_; 911 return connected_;
913 } 912 }
914 913
915 void QuicConnection::OnPacketComplete() { 914 void QuicConnection::OnPacketComplete() {
916 // Don't do anything if this packet closed the connection. 915 // Don't do anything if this packet closed the connection.
917 if (!connected_) { 916 if (!connected_) {
918 ClearLastFrames(); 917 ClearLastFrames();
919 return; 918 return;
920 } 919 }
921 920
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
1137 // Opportunistically bundle an ack with this outgoing packet. 1136 // Opportunistically bundle an ack with this outgoing packet.
1138 ScopedPacketBundler ack_bundler(this, SEND_ACK_IF_PENDING); 1137 ScopedPacketBundler ack_bundler(this, SEND_ACK_IF_PENDING);
1139 packet_generator_.AddControlFrame(QuicFrame(new QuicBlockedFrame(id))); 1138 packet_generator_.AddControlFrame(QuicFrame(new QuicBlockedFrame(id)));
1140 stats_.blocked_frames_sent++; 1139 stats_.blocked_frames_sent++;
1141 } 1140 }
1142 1141
1143 void QuicConnection::SendPathClose(QuicPathId path_id) { 1142 void QuicConnection::SendPathClose(QuicPathId path_id) {
1144 // Opportunistically bundle an ack with this outgoing packet. 1143 // Opportunistically bundle an ack with this outgoing packet.
1145 ScopedPacketBundler ack_bundler(this, SEND_ACK_IF_PENDING); 1144 ScopedPacketBundler ack_bundler(this, SEND_ACK_IF_PENDING);
1146 packet_generator_.AddControlFrame(QuicFrame(new QuicPathCloseFrame(path_id))); 1145 packet_generator_.AddControlFrame(QuicFrame(new QuicPathCloseFrame(path_id)));
1147 OnPathClosed(path_id);
1148 } 1146 }
1149 1147
1150 const QuicConnectionStats& QuicConnection::GetStats() { 1148 const QuicConnectionStats& QuicConnection::GetStats() {
1151 const RttStats* rtt_stats = sent_packet_manager_.GetRttStats(); 1149 const RttStats* rtt_stats = sent_packet_manager_.GetRttStats();
1152 1150
1153 // Update rtt and estimated bandwidth. 1151 // Update rtt and estimated bandwidth.
1154 QuicTime::Delta min_rtt = rtt_stats->min_rtt(); 1152 QuicTime::Delta min_rtt = rtt_stats->min_rtt();
1155 if (min_rtt.IsZero()) { 1153 if (min_rtt.IsZero()) {
1156 // If min RTT has not been set, use initial RTT instead. 1154 // If min RTT has not been set, use initial RTT instead.
1157 min_rtt = QuicTime::Delta::FromMicroseconds(rtt_stats->initial_rtt_us()); 1155 min_rtt = QuicTime::Delta::FromMicroseconds(rtt_stats->initial_rtt_us());
(...skipping 1172 matching lines...) Expand 10 before | Expand all | Expand 10 after
2330 sent_packet_manager_.GetLargestSentPacket(); 2328 sent_packet_manager_.GetLargestSentPacket();
2331 peer_address_ = last_packet_source_address_; 2329 peer_address_ = last_packet_source_address_;
2332 active_peer_migration_type_ = peer_migration_type; 2330 active_peer_migration_type_ = peer_migration_type;
2333 2331
2334 // TODO(jri): Move these calls to OnPeerMigrationValidated. Rename 2332 // TODO(jri): Move these calls to OnPeerMigrationValidated. Rename
2335 // OnConnectionMigration methods to OnPeerMigration. 2333 // OnConnectionMigration methods to OnPeerMigration.
2336 visitor_->OnConnectionMigration(peer_migration_type); 2334 visitor_->OnConnectionMigration(peer_migration_type);
2337 sent_packet_manager_.OnConnectionMigration(peer_migration_type); 2335 sent_packet_manager_.OnConnectionMigration(peer_migration_type);
2338 } 2336 }
2339 2337
2340 void QuicConnection::OnPathClosed(QuicPathId path_id) {
2341 // Stop receiving packets on this path.
2342 framer_.OnPathClosed(path_id);
2343 }
2344
2345 bool QuicConnection::ack_frame_updated() const { 2338 bool QuicConnection::ack_frame_updated() const {
2346 return received_packet_manager_.ack_frame_updated(); 2339 return received_packet_manager_.ack_frame_updated();
2347 } 2340 }
2348 2341
2349 StringPiece QuicConnection::GetCurrentPacket() { 2342 StringPiece QuicConnection::GetCurrentPacket() {
2350 if (current_packet_data_ == nullptr) { 2343 if (current_packet_data_ == nullptr) {
2351 return StringPiece(); 2344 return StringPiece();
2352 } 2345 }
2353 return StringPiece(current_packet_data_, last_size_); 2346 return StringPiece(current_packet_data_, last_size_);
2354 } 2347 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2398 2391
2399 void QuicConnection::CheckIfApplicationLimited() { 2392 void QuicConnection::CheckIfApplicationLimited() {
2400 if (queued_packets_.empty() && 2393 if (queued_packets_.empty() &&
2401 !sent_packet_manager_.HasPendingRetransmissions() && 2394 !sent_packet_manager_.HasPendingRetransmissions() &&
2402 !visitor_->WillingAndAbleToWrite()) { 2395 !visitor_->WillingAndAbleToWrite()) {
2403 sent_packet_manager_.OnApplicationLimited(); 2396 sent_packet_manager_.OnApplicationLimited();
2404 } 2397 }
2405 } 2398 }
2406 2399
2407 } // namespace net 2400 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/quic_connection.h ('k') | net/quic/core/quic_connection_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698