#![allow(unused)]
use alloc::string::String;
use core::{num::NonZeroUsize, time::Duration};
#[derive(Debug)]
pub enum InactivityAction {
DoNothing,
Disconnect,
Send,
}
#[derive(Debug)]
pub enum LimitAction {
Reset,
Drop,
Http,
}
#[derive(Debug)]
pub enum Profile {
Bulk,
Interactive,
}
#[derive(Debug)]
pub struct StreamConfig {
pub answer_pings: bool,
pub blacklist: String,
pub buffer_size: usize,
pub congestion_avoidance_growth_rate_factor: usize,
pub connect_delay: Option<Duration>,
pub connect_timeout: Option<Duration>,
pub dsa_list: String,
pub enforce_protocol: bool,
pub inactivity_action: InactivityAction,
pub inactivity_timeout: Duration,
pub initial_ack_delay: Duration,
pub initial_resend_delay: Duration,
pub initial_rto: Duration,
pub initial_rtt: Duration,
pub initial_window_size: usize,
pub limit_action: LimitAction,
pub max_concurrent_streams: Option<NonZeroUsize>,
pub max_conns_per_minute: Option<NonZeroUsize>,
pub max_conns_per_hour: Option<NonZeroUsize>,
pub max_conns_per_day: Option<NonZeroUsize>,
pub max_message_size: usize,
pub max_resends: usize,
pub max_total_conns_per_minute: Option<NonZeroUsize>,
pub max_total_conns_per_hour: Option<NonZeroUsize>,
pub max_total_conns_per_day: Option<NonZeroUsize>,
pub max_window_size: usize,
pub profile: Profile,
pub read_timeout: Option<NonZeroUsize>,
pub slow_start_growth_rate_factor: usize,
pub rtt_dampening: f64,
pub rttdev_dampening: f64,
pub wdw_dampening: f64,
pub write_timeout: Option<NonZeroUsize>,
}
impl Default for StreamConfig {
fn default() -> Self {
Self {
answer_pings: true,
blacklist: String::from(""),
buffer_size: 64 * 1000,
congestion_avoidance_growth_rate_factor: 1,
connect_delay: None,
connect_timeout: Some(Duration::from_secs(5 * 60)),
dsa_list: String::from(""),
enforce_protocol: true,
inactivity_action: InactivityAction::Send,
inactivity_timeout: Duration::from_secs(90),
initial_ack_delay: Duration::from_millis(750),
initial_resend_delay: Duration::from_secs(1),
initial_rto: Duration::from_secs(9),
initial_rtt: Duration::from_secs(8),
initial_window_size: 6,
limit_action: LimitAction::Reset,
max_concurrent_streams: None,
max_conns_per_minute: None,
max_conns_per_hour: None,
max_conns_per_day: None,
max_message_size: 1730,
max_resends: 8,
max_total_conns_per_minute: None,
max_total_conns_per_hour: None,
max_total_conns_per_day: None,
max_window_size: 12,
profile: Profile::Bulk,
read_timeout: None,
slow_start_growth_rate_factor: 1,
rtt_dampening: 0.75f64,
rttdev_dampening: 0.75f64,
wdw_dampening: 0.75f64,
write_timeout: None,
}
}
}