mqute_codec/protocol/v4/
ping.rs1use super::util;
8use crate::protocol::PacketType;
9
10#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
23pub struct PingReq {}
24
25util::header_packet_decode_impl!(PingReq, PacketType::PingReq);
27
28util::header_packet_encode_impl!(PingReq, PacketType::PingReq);
30
31#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
43pub struct PingResp {}
44
45util::header_packet_decode_impl!(PingResp, PacketType::PingResp);
47
48util::header_packet_encode_impl!(PingResp, PacketType::PingResp);
50
51#[cfg(test)]
52mod tests {
53 use super::*;
54 use crate::codec::PacketCodec;
55 use crate::codec::{Decode, Encode};
56 use bytes::BytesMut;
57 use tokio_util::codec::Decoder;
58
59 #[test]
60 fn pingreq_decode() {
61 let mut codec = PacketCodec::new(None, None);
62
63 let data = &[
64 (PacketType::PingReq as u8) << 4, 0x00, ];
67
68 let mut stream = BytesMut::new();
69
70 stream.extend_from_slice(&data[..]);
71
72 let raw_packet = codec.decode(&mut stream).unwrap().unwrap();
73 let packet = PingReq::decode(raw_packet).unwrap();
74
75 assert_eq!(packet, PingReq::default());
76 }
77
78 #[test]
79 fn pingreq_encode() {
80 let packet = PingReq::default();
81
82 let mut stream = BytesMut::new();
83 packet.encode(&mut stream).unwrap();
84 assert_eq!(stream, vec![(PacketType::PingReq as u8) << 4, 0x00]);
85 }
86
87 #[test]
88 fn pingresp_decode() {
89 let mut codec = PacketCodec::new(None, None);
90
91 let data = &[
92 (PacketType::PingResp as u8) << 4, 0x00, ];
95
96 let mut stream = BytesMut::new();
97
98 stream.extend_from_slice(&data[..]);
99
100 let raw_packet = codec.decode(&mut stream).unwrap().unwrap();
101 let packet = PingResp::decode(raw_packet).unwrap();
102
103 assert_eq!(packet, PingResp::default());
104 }
105
106 #[test]
107 fn pingresp_encode() {
108 let packet = PingResp::default();
109
110 let mut stream = BytesMut::new();
111 packet.encode(&mut stream).unwrap();
112 assert_eq!(stream, vec![(PacketType::PingResp as u8) << 4, 0x00]);
113 }
114}