ntex_mqtt/v3/codec/
mod.rs

1//! MQTT v3.1.1 Protocol codec
2
3use ntex_bytes::Bytes;
4
5#[allow(clippy::module_inception)]
6mod codec;
7mod decode;
8pub(crate) mod encode;
9mod packet;
10
11pub use self::codec::Codec;
12pub use self::packet::{
13    Connect, ConnectAck, ConnectAckReason, LastWill, Packet, Publish, SubscribeReturnCode,
14};
15pub use crate::types::{ConnectAckFlags, ConnectFlags, QoS};
16
17#[derive(Clone, PartialEq, Eq)]
18pub enum Decoded {
19    Packet(Packet, u32),
20    Publish(Publish, Bytes, u32),
21    PayloadChunk(Bytes, bool),
22}
23
24#[derive(Clone, Debug, PartialEq, Eq)]
25pub enum Encoded {
26    Packet(Packet),
27    Publish(Publish, Option<Bytes>),
28    PayloadChunk(Bytes),
29}
30
31impl From<Packet> for Encoded {
32    fn from(pkt: Packet) -> Encoded {
33        Encoded::Packet(pkt)
34    }
35}
36
37impl std::fmt::Debug for Decoded {
38    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
39        match self {
40            Decoded::Packet(pkt, size) => {
41                f.debug_tuple("Decoded::Packet").field(pkt).field(size).finish()
42            }
43            Decoded::Publish(pkt, _, size) => f
44                .debug_tuple("Decoded::Publish")
45                .field(pkt)
46                .field(&"<REDACTED>")
47                .field(size)
48                .finish(),
49            Decoded::PayloadChunk(_, eof) => {
50                f.debug_tuple("Decoded::Publish").field(&"<REDACTED>").field(eof).finish()
51            }
52        }
53    }
54}