OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #ifndef NET_QUIC_QUIC_UNACKED_PACKET_MAP_H_ | 5 #ifndef NET_QUIC_QUIC_UNACKED_PACKET_MAP_H_ |
6 #define NET_QUIC_QUIC_UNACKED_PACKET_MAP_H_ | 6 #define NET_QUIC_QUIC_UNACKED_PACKET_MAP_H_ |
7 | 7 |
8 #include "net/base/linked_hash_map.h" | 8 #include "net/base/linked_hash_map.h" |
9 #include "net/quic/quic_protocol.h" | 9 #include "net/quic/quic_protocol.h" |
10 | 10 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 void OnRetransmittedPacket(QuicPacketSequenceNumber old_sequence_number, | 59 void OnRetransmittedPacket(QuicPacketSequenceNumber old_sequence_number, |
60 QuicPacketSequenceNumber new_sequence_number); | 60 QuicPacketSequenceNumber new_sequence_number); |
61 | 61 |
62 // Returns true if the packet |sequence_number| is unacked. | 62 // Returns true if the packet |sequence_number| is unacked. |
63 bool IsUnacked(QuicPacketSequenceNumber sequence_number) const; | 63 bool IsUnacked(QuicPacketSequenceNumber sequence_number) const; |
64 | 64 |
65 // Returns true if the packet |sequence_number| is pending. | 65 // Returns true if the packet |sequence_number| is pending. |
66 bool IsPending(QuicPacketSequenceNumber sequence_number) const; | 66 bool IsPending(QuicPacketSequenceNumber sequence_number) const; |
67 | 67 |
68 // Sets the nack count to the max of the current nack count and |min_nacks|. | 68 // Sets the nack count to the max of the current nack count and |min_nacks|. |
69 void NackPacket(QuicPacketSequenceNumber sequence_number, | 69 void NackPacket(QuicPacketSequenceNumber sequence_number, size_t min_nacks); |
70 size_t min_nacks); | |
71 | 70 |
72 // Marks |sequence_number| as no longer pending. | 71 // Marks |sequence_number| as no longer pending. |
73 void SetNotPending(QuicPacketSequenceNumber sequence_number); | 72 void SetNotPending(QuicPacketSequenceNumber sequence_number); |
74 | 73 |
75 // Returns true if the unacked packet |sequence_number| has retransmittable | 74 // Returns true if the unacked packet |sequence_number| has retransmittable |
76 // frames. This will return false if the packet has been acked, if a | 75 // frames. This will return false if the packet has been acked, if a |
77 // previous transmission of this packet was ACK'd, or if this packet has been | 76 // previous transmission of this packet was ACK'd, or if this packet has been |
78 // retransmitted as with different sequence number, or if the packet never | 77 // retransmitted as with different sequence number, or if the packet never |
79 // had any retransmittable packets in the first place. | 78 // had any retransmittable packets in the first place. |
80 bool HasRetransmittableFrames(QuicPacketSequenceNumber sequence_number) const; | 79 bool HasRetransmittableFrames(QuicPacketSequenceNumber sequence_number) const; |
(...skipping 27 matching lines...) Expand all Loading... |
108 // don't arrive, indicating the need for retransmission. | 107 // don't arrive, indicating the need for retransmission. |
109 void SetSent(QuicPacketSequenceNumber sequence_number, | 108 void SetSent(QuicPacketSequenceNumber sequence_number, |
110 QuicTime sent_time, | 109 QuicTime sent_time, |
111 QuicByteCount bytes_sent, | 110 QuicByteCount bytes_sent, |
112 bool set_pending); | 111 bool set_pending); |
113 | 112 |
114 // Clears up to |num_to_clear| previous transmissions in order to make room | 113 // Clears up to |num_to_clear| previous transmissions in order to make room |
115 // in the ack frame for new acks. | 114 // in the ack frame for new acks. |
116 void ClearPreviousRetransmissions(size_t num_to_clear); | 115 void ClearPreviousRetransmissions(size_t num_to_clear); |
117 | 116 |
118 typedef linked_hash_map<QuicPacketSequenceNumber, | 117 typedef linked_hash_map<QuicPacketSequenceNumber, TransmissionInfo> |
119 TransmissionInfo> UnackedPacketMap; | 118 UnackedPacketMap; |
120 | 119 |
121 typedef UnackedPacketMap::const_iterator const_iterator; | 120 typedef UnackedPacketMap::const_iterator const_iterator; |
122 | 121 |
123 const_iterator begin() const { return unacked_packets_.begin(); } | 122 const_iterator begin() const { return unacked_packets_.begin(); } |
124 const_iterator end() const { return unacked_packets_.end(); } | 123 const_iterator end() const { return unacked_packets_.end(); } |
125 | 124 |
126 // Returns true if there are unacked packets that are pending. | 125 // Returns true if there are unacked packets that are pending. |
127 bool HasPendingPackets() const; | 126 bool HasPendingPackets() const; |
128 | 127 |
129 // Returns the TransmissionInfo associated with |sequence_number|, which | 128 // Returns the TransmissionInfo associated with |sequence_number|, which |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 size_t bytes_in_flight_; | 173 size_t bytes_in_flight_; |
175 // Number of outstanding crypto handshake packets. | 174 // Number of outstanding crypto handshake packets. |
176 size_t pending_crypto_packet_count_; | 175 size_t pending_crypto_packet_count_; |
177 | 176 |
178 DISALLOW_COPY_AND_ASSIGN(QuicUnackedPacketMap); | 177 DISALLOW_COPY_AND_ASSIGN(QuicUnackedPacketMap); |
179 }; | 178 }; |
180 | 179 |
181 } // namespace net | 180 } // namespace net |
182 | 181 |
183 #endif // NET_QUIC_QUIC_UNACKED_PACKET_MAP_H_ | 182 #endif // NET_QUIC_QUIC_UNACKED_PACKET_MAP_H_ |
OLD | NEW |