use std::time::Duration;
#[derive(Debug, Clone)]
pub struct RuntimeConfig {
pub channel_capacity: usize,
pub auto_connect: bool,
pub connect_backoff: BackoffConfig,
pub supervision: SupervisionPolicy,
}
impl Default for RuntimeConfig {
fn default() -> Self {
Self {
channel_capacity: 1024,
auto_connect: true,
connect_backoff: BackoffConfig::default(),
supervision: SupervisionPolicy::default(),
}
}
}
#[derive(Debug, Clone)]
pub struct BackoffConfig {
pub initial: Duration,
pub max: Duration,
pub multiplier: f64,
}
impl Default for BackoffConfig {
fn default() -> Self {
Self {
initial: Duration::from_millis(100),
max: Duration::from_secs(30),
multiplier: 2.0,
}
}
}
#[derive(Debug, Clone)]
pub struct SupervisionPolicy {
pub max_restarts: usize,
pub restart_window: Duration,
}
impl Default for SupervisionPolicy {
fn default() -> Self {
Self {
max_restarts: 5,
restart_window: Duration::from_secs(60),
}
}
}