use std::mem;
pub mod pchannel;
pub mod pdeque;
pub mod ttlcell;
pub mod time;
#[derive(Debug, Copy, Clone, Eq, PartialEq, Default)]
pub enum DeliveryPolicy {
#[default]
Always,
Optional,
Single,
SingleOptional,
}
pub trait MessageDeliveryPolicy
where
Self: Sized,
{
fn delivery_policy(&self) -> DeliveryPolicy {
DeliveryPolicy::Always
}
fn priority(&self) -> usize {
0
}
fn eq_kind(&self, other: &Self) -> bool {
mem::discriminant(self) == mem::discriminant(other)
}
fn is_expired(&self) -> bool {
false
}
#[doc(hidden)]
fn is_delivery_policy_single(&self) -> bool {
let dp = self.delivery_policy();
dp == DeliveryPolicy::Single || dp == DeliveryPolicy::SingleOptional
}
#[doc(hidden)]
fn is_delivery_policy_optional(&self) -> bool {
let dp = self.delivery_policy();
dp == DeliveryPolicy::Optional || dp == DeliveryPolicy::SingleOptional
}
}