use es_entity::clock::{Clock, ClockHandle};
use job::{JobType, RetrySettings};
use std::time::Duration;
#[derive(Clone)]
pub struct InboxConfig {
pub job_type: JobType,
pub retry_settings: RetrySettings,
pub clock: ClockHandle,
}
impl InboxConfig {
pub fn new(job_type: JobType) -> Self {
Self {
job_type,
retry_settings: RetrySettings::default(),
clock: Clock::handle().clone(),
}
}
pub fn with_retry_settings(mut self, settings: RetrySettings) -> Self {
self.retry_settings = settings;
self
}
pub fn with_max_attempts(mut self, n: u32) -> Self {
self.retry_settings.n_attempts = Some(n);
self
}
pub fn with_backoff(mut self, min: Duration, max: Duration) -> Self {
self.retry_settings.min_backoff = min;
self.retry_settings.max_backoff = max;
self
}
pub fn with_jitter(mut self, pct: u8) -> Self {
self.retry_settings.backoff_jitter_pct = pct;
self
}
pub fn with_clock(mut self, clock: ClockHandle) -> Self {
self.clock = clock;
self
}
}