use crate::Error;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum PacketType {
Connect = 1,
ConnAck,
Publish,
PubAck,
PubRec,
PubRel,
PubComp,
Subscribe,
SubAck,
Unsubscribe,
UnsubAck,
PingReq,
PingResp,
Disconnect,
Auth,
}
impl TryFrom<u8> for PacketType {
type Error = Error;
fn try_from(value: u8) -> Result<Self, Self::Error> {
let packet_type = match value {
1 => PacketType::Connect,
2 => PacketType::ConnAck,
3 => PacketType::Publish,
4 => PacketType::PubAck,
5 => PacketType::PubRec,
6 => PacketType::PubRel,
7 => PacketType::PubComp,
8 => PacketType::Subscribe,
9 => PacketType::SubAck,
10 => PacketType::Unsubscribe,
11 => PacketType::UnsubAck,
12 => PacketType::PingReq,
13 => PacketType::PingResp,
14 => PacketType::Disconnect,
15 => PacketType::Auth,
_ => return Err(Error::InvalidPacketType(value)),
};
Ok(packet_type)
}
}