OLD | NEW |
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 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 // Interface which gets callbacks from the QuicConnection at interesting | 117 // Interface which gets callbacks from the QuicConnection at interesting |
118 // points. Implementations must not mutate the state of the connection | 118 // points. Implementations must not mutate the state of the connection |
119 // as a result of these callbacks. | 119 // as a result of these callbacks. |
120 class NET_EXPORT_PRIVATE QuicConnectionDebugVisitor | 120 class NET_EXPORT_PRIVATE QuicConnectionDebugVisitor |
121 : public QuicPacketGenerator::DebugDelegate, | 121 : public QuicPacketGenerator::DebugDelegate, |
122 public QuicSentPacketManager::DebugDelegate { | 122 public QuicSentPacketManager::DebugDelegate { |
123 public: | 123 public: |
124 virtual ~QuicConnectionDebugVisitor() {} | 124 virtual ~QuicConnectionDebugVisitor() {} |
125 | 125 |
126 // Called when a packet has been sent. | 126 // Called when a packet has been sent. |
127 virtual void OnPacketSent(QuicPacketSequenceNumber sequence_number, | 127 virtual void OnPacketSent(const SerializedPacket& serialized_packet, |
128 QuicPacketSequenceNumber original_sequence_number, | 128 QuicPacketSequenceNumber original_sequence_number, |
129 EncryptionLevel level, | 129 EncryptionLevel level, |
130 TransmissionType transmission_type, | 130 TransmissionType transmission_type, |
131 const QuicEncryptedPacket& packet, | 131 const QuicEncryptedPacket& packet, |
132 WriteResult result) {} | 132 QuicTime sent_time) {} |
133 | 133 |
134 // Called when a packet has been received, but before it is | 134 // Called when a packet has been received, but before it is |
135 // validated or parsed. | 135 // validated or parsed. |
136 virtual void OnPacketReceived(const IPEndPoint& self_address, | 136 virtual void OnPacketReceived(const IPEndPoint& self_address, |
137 const IPEndPoint& peer_address, | 137 const IPEndPoint& peer_address, |
138 const QuicEncryptedPacket& packet) {} | 138 const QuicEncryptedPacket& packet) {} |
139 | 139 |
140 // Called when a packet is received with a connection id that does not | 140 // Called when a packet is received with a connection id that does not |
141 // match the ID of this connection. | 141 // match the ID of this connection. |
142 virtual void OnIncorrectConnectionId( | 142 virtual void OnIncorrectConnectionId( |
(...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
706 | 706 |
707 // Largest sequence number sent by the peer which had a stop waiting frame. | 707 // Largest sequence number sent by the peer which had a stop waiting frame. |
708 QuicPacketSequenceNumber largest_seen_packet_with_stop_waiting_; | 708 QuicPacketSequenceNumber largest_seen_packet_with_stop_waiting_; |
709 | 709 |
710 // Collection of packets which were received before encryption was | 710 // Collection of packets which were received before encryption was |
711 // established, but which could not be decrypted. We buffer these on | 711 // established, but which could not be decrypted. We buffer these on |
712 // the assumption that they could not be processed because they were | 712 // the assumption that they could not be processed because they were |
713 // sent with the INITIAL encryption and the CHLO message was lost. | 713 // sent with the INITIAL encryption and the CHLO message was lost. |
714 std::deque<QuicEncryptedPacket*> undecryptable_packets_; | 714 std::deque<QuicEncryptedPacket*> undecryptable_packets_; |
715 | 715 |
| 716 // Maximum number of undecryptable packets the connection will store. |
| 717 size_t max_undecryptable_packets_; |
| 718 |
716 // When the version negotiation packet could not be sent because the socket | 719 // When the version negotiation packet could not be sent because the socket |
717 // was not writable, this is set to true. | 720 // was not writable, this is set to true. |
718 bool pending_version_negotiation_packet_; | 721 bool pending_version_negotiation_packet_; |
719 | 722 |
720 // When packets could not be sent because the socket was not writable, | 723 // When packets could not be sent because the socket was not writable, |
721 // they are added to this list. All corresponding frames are in | 724 // they are added to this list. All corresponding frames are in |
722 // unacked_packets_ if they are to be retransmitted. | 725 // unacked_packets_ if they are to be retransmitted. |
723 QueuedPacketList queued_packets_; | 726 QueuedPacketList queued_packets_; |
724 | 727 |
725 // Contains the connection close packet if the connection has been closed. | 728 // Contains the connection close packet if the connection has been closed. |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
811 // If non-empty this contains the set of versions received in a | 814 // If non-empty this contains the set of versions received in a |
812 // version negotiation packet. | 815 // version negotiation packet. |
813 QuicVersionVector server_supported_versions_; | 816 QuicVersionVector server_supported_versions_; |
814 | 817 |
815 DISALLOW_COPY_AND_ASSIGN(QuicConnection); | 818 DISALLOW_COPY_AND_ASSIGN(QuicConnection); |
816 }; | 819 }; |
817 | 820 |
818 } // namespace net | 821 } // namespace net |
819 | 822 |
820 #endif // NET_QUIC_QUIC_CONNECTION_H_ | 823 #endif // NET_QUIC_QUIC_CONNECTION_H_ |
OLD | NEW |