simple_pub_sub_message/
pkt.rs1use crate::constants::*;
2use std::fmt::Display;
3
4#[repr(u8)]
6#[derive(Debug, Clone, PartialEq)]
7pub enum PktType {
8 PUBLISH = PUBLISH,
10 SUBSCRIBE = SUBSCRIBE,
12 UNSUBSCRIBE = UNSUBSCRIBE,
14 QUERY = QUERY,
16 PUBLISHACK = PUBLISHACK,
18 SUBSCRIBEACK = SUBSCRIBEACK,
20 UNSUBSCRIBEACK = UNSUBSCRIBEACK,
22 QUERYRESP = QUERYRESP,
24}
25
26impl PktType {
27 pub fn byte(&self) -> u8 {
35 match self {
36 PktType::PUBLISH => PUBLISH,
37 PktType::SUBSCRIBE => SUBSCRIBE,
38 PktType::UNSUBSCRIBE => UNSUBSCRIBE,
39 PktType::QUERY => QUERY,
40 PktType::PUBLISHACK => PUBLISHACK,
41 PktType::SUBSCRIBEACK => SUBSCRIBEACK,
42 PktType::UNSUBSCRIBEACK => UNSUBSCRIBEACK,
43 PktType::QUERYRESP => QUERYRESP,
44 }
45 }
46}
47
48impl Display for PktType {
49 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
50 let pkt = match self {
51 PktType::PUBLISH => "PUBLISH".to_string(),
52 PktType::SUBSCRIBE => "SUBSCRIBE".to_string(),
53 PktType::UNSUBSCRIBE => "UNSUBSCRIBE".to_string(),
54 PktType::QUERY => "QUERY".to_string(),
55 PktType::PUBLISHACK => "PUBLISH_ACK".to_string(),
56 PktType::SUBSCRIBEACK => "SUBSCRIBE_ACK".to_string(),
57 PktType::UNSUBSCRIBEACK => "UNSUBSCRIBE_ACK".to_string(),
58 PktType::QUERYRESP => "QUERY_RESP".to_string(),
59 };
60 write!(f, "{}", pkt)
61 }
62}