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

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

Issue 862133002: Update from https://crrev.com/312398 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: 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 // The entity that handles framing writes for a Quic client or server. 5 // The entity that handles framing writes for a Quic client or server.
6 // Each QuicSession will have a connection associated with it. 6 // Each QuicSession will have a connection associated with it.
7 // 7 //
8 // On the server side, the Dispatcher handles the raw reads, and hands off 8 // On the server side, the Dispatcher handles the raw reads, and hands off
9 // packets via ProcessUdpPacket for framing and processing. 9 // packets via ProcessUdpPacket for framing and processing.
10 // 10 //
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 155
156 // Called when the complete header of a packet has been parsed. 156 // Called when the complete header of a packet has been parsed.
157 virtual void OnPacketHeader(const QuicPacketHeader& header) {} 157 virtual void OnPacketHeader(const QuicPacketHeader& header) {}
158 158
159 // Called when a StreamFrame has been parsed. 159 // Called when a StreamFrame has been parsed.
160 virtual void OnStreamFrame(const QuicStreamFrame& frame) {} 160 virtual void OnStreamFrame(const QuicStreamFrame& frame) {}
161 161
162 // Called when a AckFrame has been parsed. 162 // Called when a AckFrame has been parsed.
163 virtual void OnAckFrame(const QuicAckFrame& frame) {} 163 virtual void OnAckFrame(const QuicAckFrame& frame) {}
164 164
165 // Called when a CongestionFeedbackFrame has been parsed.
166 virtual void OnCongestionFeedbackFrame(
167 const QuicCongestionFeedbackFrame& frame) {}
168
169 // Called when a StopWaitingFrame has been parsed. 165 // Called when a StopWaitingFrame has been parsed.
170 virtual void OnStopWaitingFrame(const QuicStopWaitingFrame& frame) {} 166 virtual void OnStopWaitingFrame(const QuicStopWaitingFrame& frame) {}
171 167
172 // Called when a Ping has been parsed. 168 // Called when a Ping has been parsed.
173 virtual void OnPingFrame(const QuicPingFrame& frame) {} 169 virtual void OnPingFrame(const QuicPingFrame& frame) {}
174 170
175 // Called when a GoAway has been parsed. 171 // Called when a GoAway has been parsed.
176 virtual void OnGoAwayFrame(const QuicGoAwayFrame& frame) {} 172 virtual void OnGoAwayFrame(const QuicGoAwayFrame& frame) {}
177 173
178 // Called when a RstStreamFrame has been parsed. 174 // Called when a RstStreamFrame has been parsed.
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 const QuicVersionNegotiationPacket& packet) override; 349 const QuicVersionNegotiationPacket& packet) override;
354 void OnRevivedPacket() override; 350 void OnRevivedPacket() override;
355 bool OnUnauthenticatedPublicHeader( 351 bool OnUnauthenticatedPublicHeader(
356 const QuicPacketPublicHeader& header) override; 352 const QuicPacketPublicHeader& header) override;
357 bool OnUnauthenticatedHeader(const QuicPacketHeader& header) override; 353 bool OnUnauthenticatedHeader(const QuicPacketHeader& header) override;
358 void OnDecryptedPacket(EncryptionLevel level) override; 354 void OnDecryptedPacket(EncryptionLevel level) override;
359 bool OnPacketHeader(const QuicPacketHeader& header) override; 355 bool OnPacketHeader(const QuicPacketHeader& header) override;
360 void OnFecProtectedPayload(base::StringPiece payload) override; 356 void OnFecProtectedPayload(base::StringPiece payload) override;
361 bool OnStreamFrame(const QuicStreamFrame& frame) override; 357 bool OnStreamFrame(const QuicStreamFrame& frame) override;
362 bool OnAckFrame(const QuicAckFrame& frame) override; 358 bool OnAckFrame(const QuicAckFrame& frame) override;
363 bool OnCongestionFeedbackFrame(
364 const QuicCongestionFeedbackFrame& frame) override;
365 bool OnStopWaitingFrame(const QuicStopWaitingFrame& frame) override; 359 bool OnStopWaitingFrame(const QuicStopWaitingFrame& frame) override;
366 bool OnPingFrame(const QuicPingFrame& frame) override; 360 bool OnPingFrame(const QuicPingFrame& frame) override;
367 bool OnRstStreamFrame(const QuicRstStreamFrame& frame) override; 361 bool OnRstStreamFrame(const QuicRstStreamFrame& frame) override;
368 bool OnConnectionCloseFrame(const QuicConnectionCloseFrame& frame) override; 362 bool OnConnectionCloseFrame(const QuicConnectionCloseFrame& frame) override;
369 bool OnGoAwayFrame(const QuicGoAwayFrame& frame) override; 363 bool OnGoAwayFrame(const QuicGoAwayFrame& frame) override;
370 bool OnWindowUpdateFrame(const QuicWindowUpdateFrame& frame) override; 364 bool OnWindowUpdateFrame(const QuicWindowUpdateFrame& frame) override;
371 bool OnBlockedFrame(const QuicBlockedFrame& frame) override; 365 bool OnBlockedFrame(const QuicBlockedFrame& frame) override;
372 void OnFecData(const QuicFecData& fec) override; 366 void OnFecData(const QuicFecData& fec) override;
373 void OnPacketComplete() override; 367 void OnPacketComplete() override;
374 368
375 // QuicPacketGenerator::DelegateInterface 369 // QuicPacketGenerator::DelegateInterface
376 bool ShouldGeneratePacket(TransmissionType transmission_type, 370 bool ShouldGeneratePacket(TransmissionType transmission_type,
377 HasRetransmittableData retransmittable, 371 HasRetransmittableData retransmittable,
378 IsHandshake handshake) override; 372 IsHandshake handshake) override;
379 QuicAckFrame* CreateAckFrame() override; 373 QuicAckFrame* CreateAckFrame() override;
380 QuicCongestionFeedbackFrame* CreateFeedbackFrame() override;
381 QuicStopWaitingFrame* CreateStopWaitingFrame() override; 374 QuicStopWaitingFrame* CreateStopWaitingFrame() override;
382 void OnSerializedPacket(const SerializedPacket& packet) override; 375 void OnSerializedPacket(const SerializedPacket& packet) override;
383 376
384 // QuicSentPacketManager::NetworkChangeVisitor 377 // QuicSentPacketManager::NetworkChangeVisitor
385 void OnCongestionWindowChange() override; 378 void OnCongestionWindowChange() override;
386 void OnRttChange() override; 379 void OnRttChange() override;
387 380
388 // Called by the crypto stream when the handshake completes. In the server's 381 // Called by the crypto stream when the handshake completes. In the server's
389 // case this is when the SHLO has been ACKed. Clients call this on receipt of 382 // case this is when the SHLO has been ACKed. Clients call this on receipt of
390 // the SHLO. 383 // the SHLO.
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 // Sends a ping, and resets the ping alarm. 437 // Sends a ping, and resets the ping alarm.
445 void SendPing(); 438 void SendPing();
446 439
447 // Sets up a packet with an QuicAckFrame and sends it out. 440 // Sets up a packet with an QuicAckFrame and sends it out.
448 void SendAck(); 441 void SendAck();
449 442
450 // Called when an RTO fires. Resets the retransmission alarm if there are 443 // Called when an RTO fires. Resets the retransmission alarm if there are
451 // remaining unacked packets. 444 // remaining unacked packets.
452 void OnRetransmissionTimeout(); 445 void OnRetransmissionTimeout();
453 446
447 // Called when a data packet is sent. Starts an alarm if the data sent in
448 // |sequence_number| was FEC protected.
449 void MaybeSetFecAlarm(QuicPacketSequenceNumber sequence_number);
450
454 // Retransmits all unacked packets with retransmittable frames if 451 // Retransmits all unacked packets with retransmittable frames if
455 // |retransmission_type| is ALL_UNACKED_PACKETS, otherwise retransmits only 452 // |retransmission_type| is ALL_UNACKED_PACKETS, otherwise retransmits only
456 // initially encrypted packets. Used when the negotiated protocol version is 453 // initially encrypted packets. Used when the negotiated protocol version is
457 // different from what was initially assumed and when the initial encryption 454 // different from what was initially assumed and when the initial encryption
458 // changes. 455 // changes.
459 void RetransmitUnackedPackets(TransmissionType retransmission_type); 456 void RetransmitUnackedPackets(TransmissionType retransmission_type);
460 457
461 // Calls |sent_packet_manager_|'s NeuterUnencryptedPackets. Used when the 458 // Calls |sent_packet_manager_|'s NeuterUnencryptedPackets. Used when the
462 // connection becomes forward secure and hasn't received acks for all packets. 459 // connection becomes forward secure and hasn't received acks for all packets.
463 void NeuterUnencryptedPackets(); 460 void NeuterUnencryptedPackets();
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 697
701 // True if the last packet has gotten far enough in the framer to be 698 // True if the last packet has gotten far enough in the framer to be
702 // decrypted. 699 // decrypted.
703 bool last_packet_decrypted_; 700 bool last_packet_decrypted_;
704 bool last_packet_revived_; // True if the last packet was revived from FEC. 701 bool last_packet_revived_; // True if the last packet was revived from FEC.
705 QuicByteCount last_size_; // Size of the last received packet. 702 QuicByteCount last_size_; // Size of the last received packet.
706 EncryptionLevel last_decrypted_packet_level_; 703 EncryptionLevel last_decrypted_packet_level_;
707 QuicPacketHeader last_header_; 704 QuicPacketHeader last_header_;
708 std::vector<QuicStreamFrame> last_stream_frames_; 705 std::vector<QuicStreamFrame> last_stream_frames_;
709 std::vector<QuicAckFrame> last_ack_frames_; 706 std::vector<QuicAckFrame> last_ack_frames_;
710 std::vector<QuicCongestionFeedbackFrame> last_congestion_frames_;
711 std::vector<QuicStopWaitingFrame> last_stop_waiting_frames_; 707 std::vector<QuicStopWaitingFrame> last_stop_waiting_frames_;
712 std::vector<QuicRstStreamFrame> last_rst_frames_; 708 std::vector<QuicRstStreamFrame> last_rst_frames_;
713 std::vector<QuicGoAwayFrame> last_goaway_frames_; 709 std::vector<QuicGoAwayFrame> last_goaway_frames_;
714 std::vector<QuicWindowUpdateFrame> last_window_update_frames_; 710 std::vector<QuicWindowUpdateFrame> last_window_update_frames_;
715 std::vector<QuicBlockedFrame> last_blocked_frames_; 711 std::vector<QuicBlockedFrame> last_blocked_frames_;
716 std::vector<QuicPingFrame> last_ping_frames_; 712 std::vector<QuicPingFrame> last_ping_frames_;
717 std::vector<QuicConnectionCloseFrame> last_close_frames_; 713 std::vector<QuicConnectionCloseFrame> last_close_frames_;
718 714
719 QuicCongestionFeedbackFrame outgoing_congestion_feedback_;
720
721 // Track some peer state so we can do less bookkeeping 715 // Track some peer state so we can do less bookkeeping
722 // Largest sequence sent by the peer which had an ack frame (latest ack info). 716 // Largest sequence sent by the peer which had an ack frame (latest ack info).
723 QuicPacketSequenceNumber largest_seen_packet_with_ack_; 717 QuicPacketSequenceNumber largest_seen_packet_with_ack_;
724 718
725 // Largest sequence number sent by the peer which had a stop waiting frame. 719 // Largest sequence number sent by the peer which had a stop waiting frame.
726 QuicPacketSequenceNumber largest_seen_packet_with_stop_waiting_; 720 QuicPacketSequenceNumber largest_seen_packet_with_stop_waiting_;
727 721
728 // Collection of packets which were received before encryption was 722 // Collection of packets which were received before encryption was
729 // established, but which could not be decrypted. We buffer these on 723 // established, but which could not be decrypted. We buffer these on
730 // the assumption that they could not be processed because they were 724 // the assumption that they could not be processed because they were
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
774 scoped_ptr<QuicAlarm> resume_writes_alarm_; 768 scoped_ptr<QuicAlarm> resume_writes_alarm_;
775 // An alarm that fires when the connection may have timed out. 769 // An alarm that fires when the connection may have timed out.
776 scoped_ptr<QuicAlarm> timeout_alarm_; 770 scoped_ptr<QuicAlarm> timeout_alarm_;
777 // An alarm that fires when a ping should be sent. 771 // An alarm that fires when a ping should be sent.
778 scoped_ptr<QuicAlarm> ping_alarm_; 772 scoped_ptr<QuicAlarm> ping_alarm_;
779 773
780 QuicConnectionVisitorInterface* visitor_; 774 QuicConnectionVisitorInterface* visitor_;
781 scoped_ptr<QuicConnectionDebugVisitor> debug_visitor_; 775 scoped_ptr<QuicConnectionDebugVisitor> debug_visitor_;
782 QuicPacketGenerator packet_generator_; 776 QuicPacketGenerator packet_generator_;
783 777
778 // An alarm that fires when an FEC packet should be sent.
779 scoped_ptr<QuicAlarm> fec_alarm_;
780
784 // Network idle time before we kill of this connection. 781 // Network idle time before we kill of this connection.
785 QuicTime::Delta idle_network_timeout_; 782 QuicTime::Delta idle_network_timeout_;
786 // Overall connection timeout. 783 // Overall connection timeout.
787 QuicTime::Delta overall_connection_timeout_; 784 QuicTime::Delta overall_connection_timeout_;
788 785
789 // Statistics for this session. 786 // Statistics for this session.
790 QuicConnectionStats stats_; 787 QuicConnectionStats stats_;
791 788
792 // The time that we got a packet for this connection. 789 // The time that we got a packet for this connection.
793 // This is used for timeouts, and does not indicate the packet was processed. 790 // This is used for timeouts, and does not indicate the packet was processed.
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
842 839
843 // True if this is a secure QUIC connection. 840 // True if this is a secure QUIC connection.
844 bool is_secure_; 841 bool is_secure_;
845 842
846 DISALLOW_COPY_AND_ASSIGN(QuicConnection); 843 DISALLOW_COPY_AND_ASSIGN(QuicConnection);
847 }; 844 };
848 845
849 } // namespace net 846 } // namespace net
850 847
851 #endif // NET_QUIC_QUIC_CONNECTION_H_ 848 #endif // NET_QUIC_QUIC_CONNECTION_H_
OLDNEW
« no previous file with comments | « net/quic/quic_config_test.cc ('k') | net/quic/quic_connection.cc » ('j') | shell/BUILD.gn » ('J')

Powered by Google App Engine
This is Rietveld 408576698