use crate::core::ChannelId;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum ReliabilityMode {
Reliable,
BestEffort,
LatestOnly,
Deadline,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct ChannelReliability {
pub channel_id: ChannelId,
pub mode: ReliabilityMode,
pub max_retransmits: u8,
pub deadline_ticks: Option<u64>,
}
impl ChannelReliability {
#[must_use]
pub const fn new(
channel_id: ChannelId,
mode: ReliabilityMode,
max_retransmits: u8,
deadline_ticks: Option<u64>,
) -> Self {
Self {
channel_id,
mode,
max_retransmits,
deadline_ticks,
}
}
#[must_use]
pub const fn reliable(channel_id: ChannelId, max_retransmits: u8) -> Self {
Self::new(channel_id, ReliabilityMode::Reliable, max_retransmits, None)
}
#[must_use]
pub const fn best_effort(channel_id: ChannelId) -> Self {
Self::new(channel_id, ReliabilityMode::BestEffort, 0, None)
}
}