| 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> |
| 11 #include <memory> | 11 #include <memory> |
| 12 #include <set> | 12 #include <set> |
| 13 #include <utility> | 13 #include <utility> |
| 14 #include <vector> | 14 #include <vector> |
| 15 | 15 |
| 16 #include "base/macros.h" | 16 #include "base/macros.h" |
| 17 #include "net/base/linked_hash_map.h" | 17 #include "net/base/linked_hash_map.h" |
| 18 #include "net/quic/core/congestion_control/general_loss_algorithm.h" | 18 #include "net/quic/core/congestion_control/general_loss_algorithm.h" |
| 19 #include "net/quic/core/congestion_control/loss_detection_interface.h" | 19 #include "net/quic/core/congestion_control/loss_detection_interface.h" |
| 20 #include "net/quic/core/congestion_control/pacing_sender.h" | |
| 21 #include "net/quic/core/congestion_control/rtt_stats.h" | 20 #include "net/quic/core/congestion_control/rtt_stats.h" |
| 22 #include "net/quic/core/congestion_control/send_algorithm_interface.h" | 21 #include "net/quic/core/congestion_control/send_algorithm_interface.h" |
| 23 #include "net/quic/core/quic_protocol.h" | 22 #include "net/quic/core/quic_protocol.h" |
| 24 #include "net/quic/core/quic_sent_packet_manager_interface.h" | 23 #include "net/quic/core/quic_sent_packet_manager_interface.h" |
| 25 #include "net/quic/core/quic_unacked_packet_map.h" | 24 #include "net/quic/core/quic_unacked_packet_map.h" |
| 26 | 25 |
| 27 namespace net { | 26 namespace net { |
| 28 | 27 |
| 29 namespace test { | 28 namespace test { |
| 30 class QuicConnectionPeer; | 29 class QuicConnectionPeer; |
| (...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 367 size_t consecutive_tlp_count_; | 366 size_t consecutive_tlp_count_; |
| 368 // Number of times the crypto handshake has been retransmitted. | 367 // Number of times the crypto handshake has been retransmitted. |
| 369 size_t consecutive_crypto_retransmission_count_; | 368 size_t consecutive_crypto_retransmission_count_; |
| 370 // Number of pending transmissions of TLP, RTO, or crypto packets. | 369 // Number of pending transmissions of TLP, RTO, or crypto packets. |
| 371 size_t pending_timer_transmission_count_; | 370 size_t pending_timer_transmission_count_; |
| 372 // Maximum number of tail loss probes to send before firing an RTO. | 371 // Maximum number of tail loss probes to send before firing an RTO. |
| 373 size_t max_tail_loss_probes_; | 372 size_t max_tail_loss_probes_; |
| 374 // If true, send the TLP at 0.5 RTT. | 373 // If true, send the TLP at 0.5 RTT. |
| 375 bool enable_half_rtt_tail_loss_probe_; | 374 bool enable_half_rtt_tail_loss_probe_; |
| 376 bool using_pacing_; | 375 bool using_pacing_; |
| 377 // TODO(jdorfman): Remove |using_pacing_| and rename |using_inline_pacing_| to | |
| 378 // |using_pacing| when deprecating | |
| 379 // gfe2_reloadable_flag_quic_use_inline_pacing. | |
| 380 bool using_inline_pacing_; | |
| 381 // If true, use the new RTO with loss based CWND reduction instead of the send | 376 // If true, use the new RTO with loss based CWND reduction instead of the send |
| 382 // algorithms's OnRetransmissionTimeout to reduce the congestion window. | 377 // algorithms's OnRetransmissionTimeout to reduce the congestion window. |
| 383 bool use_new_rto_; | 378 bool use_new_rto_; |
| 384 // If true, cancel pending retransmissions if they're larger than | 379 // If true, cancel pending retransmissions if they're larger than |
| 385 // largest_newly_acked. | 380 // largest_newly_acked. |
| 386 bool undo_pending_retransmits_; | 381 bool undo_pending_retransmits_; |
| 387 | 382 |
| 388 // Vectors packets acked and lost as a result of the last congestion event. | 383 // Vectors packets acked and lost as a result of the last congestion event. |
| 389 SendAlgorithmInterface::CongestionVector packets_acked_; | 384 SendAlgorithmInterface::CongestionVector packets_acked_; |
| 390 SendAlgorithmInterface::CongestionVector packets_lost_; | 385 SendAlgorithmInterface::CongestionVector packets_lost_; |
| 391 // Largest newly acknowledged packet. | 386 // Largest newly acknowledged packet. |
| 392 QuicPacketNumber largest_newly_acked_; | 387 QuicPacketNumber largest_newly_acked_; |
| 393 // Largest packet in bytes ever acknowledged. | 388 // Largest packet in bytes ever acknowledged. |
| 394 QuicPacketLength largest_mtu_acked_; | 389 QuicPacketLength largest_mtu_acked_; |
| 395 | 390 |
| 396 PacingSender pacing_sender_; | |
| 397 | |
| 398 // Set to true after the crypto handshake has successfully completed. After | 391 // Set to true after the crypto handshake has successfully completed. After |
| 399 // this is true we no longer use HANDSHAKE_MODE, and further frames sent on | 392 // this is true we no longer use HANDSHAKE_MODE, and further frames sent on |
| 400 // the crypto stream (i.e. SCUP messages) are treated like normal | 393 // the crypto stream (i.e. SCUP messages) are treated like normal |
| 401 // retransmittable frames. | 394 // retransmittable frames. |
| 402 bool handshake_confirmed_; | 395 bool handshake_confirmed_; |
| 403 | 396 |
| 404 // Records bandwidth from server to client in normal operation, over periods | 397 // Records bandwidth from server to client in normal operation, over periods |
| 405 // of time with no loss events. | 398 // of time with no loss events. |
| 406 QuicSustainedBandwidthRecorder sustained_bandwidth_recorder_; | 399 QuicSustainedBandwidthRecorder sustained_bandwidth_recorder_; |
| 407 | 400 |
| 408 DISALLOW_COPY_AND_ASSIGN(QuicSentPacketManager); | 401 DISALLOW_COPY_AND_ASSIGN(QuicSentPacketManager); |
| 409 }; | 402 }; |
| 410 | 403 |
| 411 } // namespace net | 404 } // namespace net |
| 412 | 405 |
| 413 #endif // NET_QUIC_QUIC_SENT_PACKET_MANAGER_H_ | 406 #endif // NET_QUIC_QUIC_SENT_PACKET_MANAGER_H_ |
| OLD | NEW |