use crate::wire::Message;
use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
pub enum PacketType {
CmdRequest = 0,
CmdResponse = 1,
CmdUnknown = 2,
EventRegister = 3,
EventUnregister = 4,
EventConfirm = 5,
EventUnknown = 6,
Event = 7,
}
impl PacketType {
pub fn is_named(self) -> bool {
matches!(
self,
PacketType::CmdRequest
| PacketType::EventRegister
| PacketType::EventUnregister
| PacketType::Event
)
}
}
impl fmt::Display for PacketType {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{self:?}")
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Packet {
pub ty: PacketType,
pub name: Option<String>,
pub message: Option<Message>,
}
impl Packet {
pub fn new(ty: PacketType, name: Option<String>, message: Option<Message>) -> Self {
Self { ty, name, message }
}
}