mqute_codec/protocol/v4/
disconnect.rs1use super::util;
8use crate::protocol::{PacketType, traits};
9
10#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
20pub struct Disconnect {}
21
22util::header_packet_decode_impl!(Disconnect, PacketType::Disconnect);
24
25util::header_packet_encode_impl!(Disconnect, PacketType::Disconnect);
27
28impl traits::Disconnect for Disconnect {}
29
30#[cfg(test)]
31mod tests {
32 use super::*;
33 use crate::codec::PacketCodec;
34 use crate::codec::{Decode, Encode};
35 use bytes::BytesMut;
36 use tokio_util::codec::Decoder;
37
38 #[test]
39 fn disconnect_decode() {
40 let mut codec = PacketCodec::new(None, None);
41
42 let data = &[
43 (PacketType::Disconnect as u8) << 4, 0x00, ];
46
47 let mut stream = BytesMut::new();
48
49 stream.extend_from_slice(&data[..]);
50
51 let raw_packet = codec.decode(&mut stream).unwrap().unwrap();
52 let packet = Disconnect::decode(raw_packet).unwrap();
53
54 assert_eq!(packet, Disconnect::default());
55 }
56
57 #[test]
58 fn disconnect_encode() {
59 let packet = Disconnect::default();
60
61 let mut stream = BytesMut::new();
62 packet.encode(&mut stream).unwrap();
63 assert_eq!(stream, vec![(PacketType::Disconnect as u8) << 4, 0x00]);
64 }
65}