mqute_codec/protocol/v4/
disconnect.rs1use super::util;
8use crate::protocol::PacketType;
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
28#[cfg(test)]
29mod tests {
30 use super::*;
31 use crate::codec::PacketCodec;
32 use crate::codec::{Decode, Encode};
33 use bytes::BytesMut;
34 use tokio_util::codec::Decoder;
35
36 #[test]
37 fn disconnect_decode() {
38 let mut codec = PacketCodec::new(None, None);
39
40 let data = &[
41 (PacketType::Disconnect as u8) << 4, 0x00, ];
44
45 let mut stream = BytesMut::new();
46
47 stream.extend_from_slice(&data[..]);
48
49 let raw_packet = codec.decode(&mut stream).unwrap().unwrap();
50 let packet = Disconnect::decode(raw_packet).unwrap();
51
52 assert_eq!(packet, Disconnect::default());
53 }
54
55 #[test]
56 fn disconnect_encode() {
57 let packet = Disconnect::default();
58
59 let mut stream = BytesMut::new();
60 packet.encode(&mut stream).unwrap();
61 assert_eq!(stream, vec![(PacketType::Disconnect as u8) << 4, 0x00]);
62 }
63}