Skip to main content

appletheia_application/outbox/
outbox_polling_options.rs

1use super::{
2    OutboxPollBackoffMultiplier, OutboxPollInterval, OutboxPollJitterRatio,
3    OutboxPollingOptionsError,
4};
5
6#[derive(Clone, Debug, PartialEq)]
7pub struct OutboxPollingOptions {
8    pub base: OutboxPollInterval,
9    pub max: OutboxPollInterval,
10    pub multiplier: OutboxPollBackoffMultiplier,
11    pub jitter: OutboxPollJitterRatio,
12}
13
14impl OutboxPollingOptions {
15    pub fn new(
16        base: OutboxPollInterval,
17        max: OutboxPollInterval,
18        multiplier: OutboxPollBackoffMultiplier,
19        jitter: OutboxPollJitterRatio,
20    ) -> Result<Self, OutboxPollingOptionsError> {
21        if base.value() > max.value() {
22            return Err(OutboxPollingOptionsError::BaseGreaterThanMax { base, max });
23        }
24
25        Ok(Self {
26            base,
27            max,
28            multiplier,
29            jitter,
30        })
31    }
32}