| 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 |