use std::time::Duration;
pub const RATE_LIMIT_COOLDOWN: Duration = Duration::from_secs(60);
pub const BURN_COOLDOWN: Duration = Duration::from_secs(5 * 60);
pub const TRANSIENT_COOLDOWN: Duration = Duration::from_secs(30);
pub const REDIRECT_MISMATCH_BACKOFF_BASE: Duration = Duration::from_secs(60);
pub const REDIRECT_MISMATCH_BACKOFF_MAX: Duration = Duration::from_secs(30 * 60);
#[derive(Clone, Debug)]
pub struct Policy {
pub max_attempts: u32,
pub rate_limit_cooldown: Duration,
pub burn_cooldown: Duration,
pub transient_cooldown: Duration,
pub no_checkbox_deadline: Duration,
pub warm_timeout: Duration,
pub lease_timeout: Duration,
pub probe_concurrency: usize,
pub slim_timeout: Duration,
pub slim_connect_timeout: Duration,
pub redirect_mismatch_backoff_base: Duration,
pub redirect_mismatch_backoff_max: Duration,
}
impl Default for Policy {
fn default() -> Self {
Policy {
max_attempts: 4,
rate_limit_cooldown: RATE_LIMIT_COOLDOWN,
burn_cooldown: BURN_COOLDOWN,
transient_cooldown: TRANSIENT_COOLDOWN,
no_checkbox_deadline: Duration::from_secs(20),
warm_timeout: Duration::from_secs(20),
lease_timeout: Duration::from_secs(60),
probe_concurrency: 64,
slim_timeout: crate::slim::DEFAULT_TIMEOUT,
slim_connect_timeout: crate::slim::DEFAULT_CONNECT_TIMEOUT,
redirect_mismatch_backoff_base: REDIRECT_MISMATCH_BACKOFF_BASE,
redirect_mismatch_backoff_max: REDIRECT_MISMATCH_BACKOFF_MAX,
}
}
}