Skip to main content

appletheia_application/outbox/
outbox_poll_backoff_multiplier.rs

1use super::OutboxPollBackoffMultiplierError;
2
3#[derive(Copy, Clone, Debug, PartialEq)]
4pub struct OutboxPollBackoffMultiplier(f64);
5
6impl OutboxPollBackoffMultiplier {
7    pub fn new() -> Self {
8        Self(1.0)
9    }
10
11    pub fn value(&self) -> f64 {
12        self.0
13    }
14}
15
16impl Default for OutboxPollBackoffMultiplier {
17    fn default() -> Self {
18        Self::new()
19    }
20}
21
22impl TryFrom<f64> for OutboxPollBackoffMultiplier {
23    type Error = OutboxPollBackoffMultiplierError;
24
25    fn try_from(value: f64) -> Result<Self, Self::Error> {
26        if !value.is_finite() || value < 1.0 {
27            return Err(OutboxPollBackoffMultiplierError::Invalid(value));
28        }
29        Ok(OutboxPollBackoffMultiplier(value))
30    }
31}