use crate::core::{ChannelId, PacketNumber};
use crate::reliability::{MessageKey, PacketReliabilityEvent};
use crate::engine::time::Instant;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum EngineEventKind {
MessageReceived,
LinkWrite,
AckRequired,
Retransmit,
WakeAt,
Reliability,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum EngineEvent {
MessageReceived {
channel_id: ChannelId,
message_key: MessageKey,
},
LinkWrite,
AckRequired {
packet_number: PacketNumber,
},
Retransmit {
packet_number: PacketNumber,
},
WakeAt(Instant),
Reliability(PacketReliabilityEvent),
}
impl EngineEvent {
#[must_use]
pub const fn kind(self) -> EngineEventKind {
match self {
Self::MessageReceived { .. } => EngineEventKind::MessageReceived,
Self::LinkWrite => EngineEventKind::LinkWrite,
Self::AckRequired { .. } => EngineEventKind::AckRequired,
Self::Retransmit { .. } => EngineEventKind::Retransmit,
Self::WakeAt(_) => EngineEventKind::WakeAt,
Self::Reliability(_) => EngineEventKind::Reliability,
}
}
}