OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_SENT_PACKET_MANAGER_H_ | 5 #ifndef NET_QUIC_QUIC_SENT_PACKET_MANAGER_H_ |
6 #define NET_QUIC_QUIC_SENT_PACKET_MANAGER_H_ | 6 #define NET_QUIC_QUIC_SENT_PACKET_MANAGER_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 | 9 |
10 #include <map> | 10 #include <map> |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 // they don't get retransmitted. | 151 // they don't get retransmitted. |
152 void NeuterUnencryptedPackets(); | 152 void NeuterUnencryptedPackets(); |
153 | 153 |
154 // Returns true if the unacked packet |packet_number| has retransmittable | 154 // Returns true if the unacked packet |packet_number| has retransmittable |
155 // frames. This will only return false if the packet has been acked, if a | 155 // frames. This will only return false if the packet has been acked, if a |
156 // previous transmission of this packet was ACK'd, or if this packet has been | 156 // previous transmission of this packet was ACK'd, or if this packet has been |
157 // retransmitted as with different packet number. | 157 // retransmitted as with different packet number. |
158 bool HasRetransmittableFrames(QuicPacketNumber packet_number) const; | 158 bool HasRetransmittableFrames(QuicPacketNumber packet_number) const; |
159 | 159 |
160 // Returns true if there are pending retransmissions. | 160 // Returns true if there are pending retransmissions. |
| 161 // Not const because retransmissions may be cancelled before returning. |
161 bool HasPendingRetransmissions() const; | 162 bool HasPendingRetransmissions() const; |
162 | 163 |
163 // Retrieves the next pending retransmission. You must ensure that | 164 // Retrieves the next pending retransmission. You must ensure that |
164 // there are pending retransmissions prior to calling this function. | 165 // there are pending retransmissions prior to calling this function. |
165 PendingRetransmission NextPendingRetransmission(); | 166 PendingRetransmission NextPendingRetransmission(); |
166 | 167 |
167 bool HasUnackedPackets() const; | 168 bool HasUnackedPackets() const; |
168 | 169 |
169 // Returns the smallest packet number of a serialized packet which has not | 170 // Returns the smallest packet number of a serialized packet which has not |
170 // been acked by the peer. | 171 // been acked by the peer. |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
427 // Number of pending transmissions of TLP, RTO, or crypto packets. | 428 // Number of pending transmissions of TLP, RTO, or crypto packets. |
428 size_t pending_timer_transmission_count_; | 429 size_t pending_timer_transmission_count_; |
429 // Maximum number of tail loss probes to send before firing an RTO. | 430 // Maximum number of tail loss probes to send before firing an RTO. |
430 size_t max_tail_loss_probes_; | 431 size_t max_tail_loss_probes_; |
431 // If true, send the TLP at 0.5 RTT. | 432 // If true, send the TLP at 0.5 RTT. |
432 bool enable_half_rtt_tail_loss_probe_; | 433 bool enable_half_rtt_tail_loss_probe_; |
433 bool using_pacing_; | 434 bool using_pacing_; |
434 // If true, use the new RTO with loss based CWND reduction instead of the send | 435 // If true, use the new RTO with loss based CWND reduction instead of the send |
435 // algorithms's OnRetransmissionTimeout to reduce the congestion window. | 436 // algorithms's OnRetransmissionTimeout to reduce the congestion window. |
436 bool use_new_rto_; | 437 bool use_new_rto_; |
| 438 // If true, cancel pending retransmissions if they're larger than |
| 439 // largest_newly_acked. |
| 440 bool undo_pending_retransmits_; |
437 | 441 |
438 // Vectors packets acked and lost as a result of the last congestion event. | 442 // Vectors packets acked and lost as a result of the last congestion event. |
439 SendAlgorithmInterface::CongestionVector packets_acked_; | 443 SendAlgorithmInterface::CongestionVector packets_acked_; |
440 SendAlgorithmInterface::CongestionVector packets_lost_; | 444 SendAlgorithmInterface::CongestionVector packets_lost_; |
441 // Largest newly acknowledged packet. | 445 // Largest newly acknowledged packet. |
442 QuicPacketNumber largest_newly_acked_; | 446 QuicPacketNumber largest_newly_acked_; |
443 | 447 |
444 // Set to true after the crypto handshake has successfully completed. After | 448 // Set to true after the crypto handshake has successfully completed. After |
445 // this is true we no longer use HANDSHAKE_MODE, and further frames sent on | 449 // this is true we no longer use HANDSHAKE_MODE, and further frames sent on |
446 // the crypto stream (i.e. SCUP messages) are treated like normal | 450 // the crypto stream (i.e. SCUP messages) are treated like normal |
447 // retransmittable frames. | 451 // retransmittable frames. |
448 bool handshake_confirmed_; | 452 bool handshake_confirmed_; |
449 | 453 |
450 // Records bandwidth from server to client in normal operation, over periods | 454 // Records bandwidth from server to client in normal operation, over periods |
451 // of time with no loss events. | 455 // of time with no loss events. |
452 QuicSustainedBandwidthRecorder sustained_bandwidth_recorder_; | 456 QuicSustainedBandwidthRecorder sustained_bandwidth_recorder_; |
453 | 457 |
454 DISALLOW_COPY_AND_ASSIGN(QuicSentPacketManager); | 458 DISALLOW_COPY_AND_ASSIGN(QuicSentPacketManager); |
455 }; | 459 }; |
456 | 460 |
457 } // namespace net | 461 } // namespace net |
458 | 462 |
459 #endif // NET_QUIC_QUIC_SENT_PACKET_MANAGER_H_ | 463 #endif // NET_QUIC_QUIC_SENT_PACKET_MANAGER_H_ |
OLD | NEW |