1use crate::QoS;
2
3#[derive(Debug, Clone, Copy)]
8pub enum PacketType {
9    Reserved,
10    Connect,
11    ConnAck,
12    Publish {
13        duplicate: bool,
14        qos: QoS,
15        retain: bool,
16    },
17    PubAck,
18    PubRec,
19    PubRel,
20    PubComp,
21    Subscribe,
22    SubAck,
23    UnSubscribe,
24    UnSubAck,
25    PingReq,
26    PingResp,
27    Disconnect,
28    Auth,
29}
30
31enum PayloadRequirements {
32    None,
33    Required,
34    Optional,
35}
36
37impl From<PacketType> for PayloadRequirements {
38    fn from(value: PacketType) -> Self {
39        match value {
40            PacketType::Publish { .. } => PayloadRequirements::Optional,
41            PacketType::Connect
42            | PacketType::Subscribe
43            | PacketType::SubAck
44            | PacketType::UnSubscribe
45            | PacketType::UnSubAck => PayloadRequirements::Required,
46            _ => PayloadRequirements::None,
47        }
48    }
49}