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

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

Issue 103973007: Land Recent QUIC Changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix for android compile error Created 7 years 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 | Annotate | Revision Log
« no previous file with comments | « net/quic/quic_client_session_test.cc ('k') | net/quic/quic_connection.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 // 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 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 // handshake finishes. 352 // handshake finishes.
353 void SetOverallConnectionTimeout(QuicTime::Delta timeout); 353 void SetOverallConnectionTimeout(QuicTime::Delta timeout);
354 354
355 // If the connection has timed out, this will close the connection and return 355 // If the connection has timed out, this will close the connection and return
356 // true. Otherwise, it will return false and will reset the timeout alarm. 356 // true. Otherwise, it will return false and will reset the timeout alarm.
357 bool CheckForTimeout(); 357 bool CheckForTimeout();
358 358
359 // Sets up a packet with an QuicAckFrame and sends it out. 359 // Sets up a packet with an QuicAckFrame and sends it out.
360 void SendAck(); 360 void SendAck();
361 361
362 // Called when an RTO fires. Returns the time when this alarm 362 // Called when an RTO fires. Resets the retransmission alarm if there are
363 // should next fire, or 0 if no retransmission alarm should be set. 363 // remaining unacked packets.
364 void OnRetransmissionTimeout(); 364 void OnRetransmissionTimeout();
365 365
366 // Called when an alarm to abandon sent FEC packets fires. The alarm is set
367 // by the same policy as the RTO alarm, but is a separate alarm.
368 QuicTime OnAbandonFecTimeout();
369
370 // Retransmits all unacked packets with retransmittable frames if 366 // Retransmits all unacked packets with retransmittable frames if
371 // |retransmission_type| is ALL_PACKETS, otherwise retransmits only initially 367 // |retransmission_type| is ALL_PACKETS, otherwise retransmits only initially
372 // encrypted packets. Used when the negotiated protocol version is different 368 // encrypted packets. Used when the negotiated protocol version is different
373 // from what was initially assumed and when the visitor wants to re-transmit 369 // from what was initially assumed and when the visitor wants to re-transmit
374 // initially encrypted packets when the initial encrypter changes. 370 // initially encrypted packets when the initial encrypter changes.
375 void RetransmitUnackedPackets(RetransmissionType retransmission_type); 371 void RetransmitUnackedPackets(RetransmissionType retransmission_type);
376 372
377 // Changes the encrypter used for level |level| to |encrypter|. The function 373 // Changes the encrypter used for level |level| to |encrypter|. The function
378 // takes ownership of |encrypter|. 374 // takes ownership of |encrypter|.
379 void SetEncrypter(EncryptionLevel level, QuicEncrypter* encrypter); 375 void SetEncrypter(EncryptionLevel level, QuicEncrypter* encrypter);
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 typedef std::list<QueuedPacket> QueuedPacketList; 568 typedef std::list<QueuedPacket> QueuedPacketList;
573 typedef std::map<QuicFecGroupNumber, QuicFecGroup*> FecGroupMap; 569 typedef std::map<QuicFecGroupNumber, QuicFecGroup*> FecGroupMap;
574 typedef std::priority_queue<RetransmissionTime, 570 typedef std::priority_queue<RetransmissionTime,
575 std::vector<RetransmissionTime>, 571 std::vector<RetransmissionTime>,
576 RetransmissionTimeComparator> 572 RetransmissionTimeComparator>
577 RetransmissionTimeouts; 573 RetransmissionTimeouts;
578 574
579 // Sends a version negotiation packet to the peer. 575 // Sends a version negotiation packet to the peer.
580 void SendVersionNegotiationPacket(); 576 void SendVersionNegotiationPacket();
581 577
582 void SetupRetransmission(QuicPacketSequenceNumber sequence_number, 578 void SetupRetransmissionAlarm(QuicPacketSequenceNumber sequence_number);
583 EncryptionLevel level);
584 bool IsRetransmission(QuicPacketSequenceNumber sequence_number); 579 bool IsRetransmission(QuicPacketSequenceNumber sequence_number);
585 580
586 void SetupAbandonFecTimer(QuicPacketSequenceNumber sequence_number); 581 void SetupAbandonFecTimer(QuicPacketSequenceNumber sequence_number);
587 582
588 // Clears any accumulated frames from the last received packet. 583 // Clears any accumulated frames from the last received packet.
589 void ClearLastFrames(); 584 void ClearLastFrames();
590 585
591 // Called from OnCanWrite and WriteIfNotBlocked to write queued packets. 586 // Called from OnCanWrite and WriteIfNotBlocked to write queued packets.
592 // Returns false if the socket has become blocked. 587 // Returns false if the socket has become blocked.
593 bool DoWrite(); 588 bool DoWrite();
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 696
702 FecGroupMap group_map_; 697 FecGroupMap group_map_;
703 698
704 QuicReceivedPacketManager received_packet_manager_; 699 QuicReceivedPacketManager received_packet_manager_;
705 QuicSentEntropyManager sent_entropy_manager_; 700 QuicSentEntropyManager sent_entropy_manager_;
706 701
707 // An alarm that fires when an ACK should be sent to the peer. 702 // An alarm that fires when an ACK should be sent to the peer.
708 scoped_ptr<QuicAlarm> ack_alarm_; 703 scoped_ptr<QuicAlarm> ack_alarm_;
709 // An alarm that fires when a packet needs to be retransmitted. 704 // An alarm that fires when a packet needs to be retransmitted.
710 scoped_ptr<QuicAlarm> retransmission_alarm_; 705 scoped_ptr<QuicAlarm> retransmission_alarm_;
711 // An alarm that fires when one or more FEC packets are to be discarded.
712 scoped_ptr<QuicAlarm> abandon_fec_alarm_;
713 // An alarm that is scheduled when the sent scheduler requires a 706 // An alarm that is scheduled when the sent scheduler requires a
714 // a delay before sending packets and fires when the packet may be sent. 707 // a delay before sending packets and fires when the packet may be sent.
715 scoped_ptr<QuicAlarm> send_alarm_; 708 scoped_ptr<QuicAlarm> send_alarm_;
716 // An alarm that is scheduled when the connection can still write and there 709 // An alarm that is scheduled when the connection can still write and there
717 // may be more data to send. 710 // may be more data to send.
718 scoped_ptr<QuicAlarm> resume_writes_alarm_; 711 scoped_ptr<QuicAlarm> resume_writes_alarm_;
719 // An alarm that fires when the connection may have timed out. 712 // An alarm that fires when the connection may have timed out.
720 scoped_ptr<QuicAlarm> timeout_alarm_; 713 scoped_ptr<QuicAlarm> timeout_alarm_;
721 714
722 QuicConnectionVisitorInterface* visitor_; 715 QuicConnectionVisitorInterface* visitor_;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
773 // If non-empty this contains the set of versions received in a 766 // If non-empty this contains the set of versions received in a
774 // version negotiation packet. 767 // version negotiation packet.
775 QuicVersionVector server_supported_versions_; 768 QuicVersionVector server_supported_versions_;
776 769
777 DISALLOW_COPY_AND_ASSIGN(QuicConnection); 770 DISALLOW_COPY_AND_ASSIGN(QuicConnection);
778 }; 771 };
779 772
780 } // namespace net 773 } // namespace net
781 774
782 #endif // NET_QUIC_QUIC_CONNECTION_H_ 775 #endif // NET_QUIC_QUIC_CONNECTION_H_
OLDNEW
« no previous file with comments | « net/quic/quic_client_session_test.cc ('k') | net/quic/quic_connection.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698