121 void on_acks(
size_t bytes,
size_t packets)
override;
Interface that the user should implement, passing the implementing Logger into logging classes (Flow'...
Utility class for use by Congestion_control_strategy implementations that implements congestion windo...
Classic congestion control but with backoff to bandwidth estimate-based pipe size.
static const Send_bandwidth_estimator::Time_unit S_INIT_RTT_MIN
The initial value for m_rtt_min, until one RTT measurement comes in.
void on_drop_timeout(size_t bytes, size_t packets) override
Implements Congestion_control_strategy::on_drop_timeout() API.
void on_idle_timeout() override
Implements Congestion_control_strategy::on_idle_timeout() API.
bool m_reset_rtt_min
If true, then when the next RTT measurement comes in, any past measurement should be disregarded,...
void on_acks(size_t bytes, size_t packets) override
Implements Congestion_control_strategy::on_acks() API.
void on_individual_ack(const Fine_duration &packet_rtt, const size_t bytes, const size_t sent_cwnd_bytes) override
Implements Congestion_control_strategy::on_individual_ack() API.
void on_loss_event(size_t bytes, size_t packets) override
Implements Congestion_control_strategy::on_loss_event() API.
size_t congestion_window_adjusted_bytes() const
Returns the best bandwidth/latency-based guess for what the current window (pipe) size should be.
Send_bandwidth_estimator::Time_unit m_rtt_min
The minimum individual packet's RTT observed so far; it should be reset to the next sample if m_reset...
Congestion_control_classic_with_bandwidth_est(log::Logger *logger_ptr, Peer_socket::Const_ptr sock)
Constructs object by setting up logging and saving a pointer to the containing Peer_socket.
Congestion_control_classic_data m_classic_data
The Reno CWND/SSTHRESH-changing engine and CWND/SSTHRESH storage.
size_t congestion_window_bytes() const override
Implements Congestion_control_strategy::congestion_window_bytes() API.
The abstract interface for a per-socket module that determines the socket's congestion control behavi...
boost::chrono::milliseconds Time_unit
The primary time unit over which this class reports bandwidth.
Const_target_ptr Const_ptr
Short-hand for ref-counted pointer to immutable values of type Target_type::element_type (a-la T cons...
Flow module containing the API and implementation of the Flow network protocol, a TCP-inspired stream...
Fine_clock::duration Fine_duration
A high-res time duration as computed from two Fine_time_pts.