use crate::core::PacketKey;
use crate::engine::{SendFailedEvent, config::MAX_WIRE_BYTES};
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub(crate) enum EngineOutput {
Write(WriteEvent),
SendFailed(SendFailedEvent),
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub(crate) struct WriteEvent {
pub key: PacketKey,
pub bytes: [u8; MAX_WIRE_BYTES],
pub len: usize,
pub attempts: u8,
pub priority: WritePriority,
}
impl WriteEvent {
#[must_use]
pub const fn as_bytes(&self) -> &[u8] {
self.bytes.split_at(self.len).0
}
}
#[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
pub(crate) enum WritePriority {
Control,
Retransmit,
NewData,
}