use std::time::Duration;
#[non_exhaustive]
#[derive(Debug, Clone, Default)]
pub struct PrinterConfig {
pub timeouts: PrinterTimeouts,
pub retry: RetryConfig,
pub trace_io: bool,
}
#[non_exhaustive]
#[derive(Debug, Clone)]
pub struct PrinterTimeouts {
pub connect: Duration,
pub write: Duration,
pub read: Duration,
}
impl Default for PrinterTimeouts {
fn default() -> Self {
Self {
connect: Duration::from_secs(5),
write: Duration::from_secs(30),
read: Duration::from_secs(10),
}
}
}
#[non_exhaustive]
#[derive(Debug, Clone)]
pub struct RetryConfig {
pub max_attempts: u32,
pub initial_delay: Duration,
pub max_delay: Duration,
pub jitter: bool,
}
impl Default for RetryConfig {
fn default() -> Self {
Self {
max_attempts: 3,
initial_delay: Duration::from_millis(500),
max_delay: Duration::from_secs(10),
jitter: true,
}
}
}
#[non_exhaustive]
#[derive(Debug, Clone, Default)]
pub struct BatchOptions {
pub status_interval: Option<std::num::NonZeroUsize>,
}