use alloc::string::String;
use core::time::Duration;
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum PressureResponse {
Accept,
Defer {
delay: Duration,
},
Reject {
reason: String,
},
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct DeliveryAck {
pressure: PressureResponse,
accepted: bool,
durable_position: Option<u64>,
}
impl DeliveryAck {
#[must_use]
pub const fn new(pressure: PressureResponse, accepted: bool) -> Self {
Self {
pressure,
accepted,
durable_position: None,
}
}
#[must_use]
pub const fn with_durable_position(mut self, durable_position: Option<u64>) -> Self {
self.durable_position = durable_position;
self
}
#[must_use]
pub const fn durable_position(&self) -> Option<u64> {
self.durable_position
}
#[must_use]
pub const fn is_accepted(&self) -> bool {
self.accepted
}
#[must_use]
pub const fn pressure(&self) -> &PressureResponse {
&self.pressure
}
}