Trait quinn_proto::congestion::Controller
source · [−]pub trait Controller: Send {
fn on_congestion_event(
&mut self,
now: Instant,
sent: Instant,
is_persistent_congestion: bool,
lost_bytes: u64
);
fn window(&self) -> u64;
fn clone_box(&self) -> Box<dyn Controller>;
fn initial_window(&self) -> u64;
fn into_any(self: Box<Self>) -> Box<dyn Any>;
fn on_sent(&mut self, now: Instant, bytes: u64, last_packet_number: u64) { ... }
fn on_ack(
&mut self,
now: Instant,
sent: Instant,
bytes: u64,
app_limited: bool,
rtt: &RttEstimator
) { ... }
fn on_end_acks(
&mut self,
now: Instant,
in_flight: u64,
app_limited: bool,
largest_packet_num_acked: Option<u64>
) { ... }
}
Expand description
Common interface for different congestion controllers
Required Methods
Packets were deemed lost or marked congested
in_persistent_congestion
indicates whether all packets sent within the persistent
congestion threshold period ending when the most recent packet in this batch was sent were
lost.
lost_bytes
indicates how many bytes were lost. This value will be 0 for ECN triggers.
fn clone_box(&self) -> Box<dyn Controller>
fn clone_box(&self) -> Box<dyn Controller>
Duplicate the controller’s state
fn initial_window(&self) -> u64
fn initial_window(&self) -> u64
Initial congestion window
Provided Methods
One or more packets were just sent
Packet deliveries were confirmed
app_limited
indicates whether the connection was blocked on outgoing
application data prior to receiving these acknowledgements.