mqute_codec/protocol/v5/
ping.rs1use super::util;
19use crate::protocol::{PacketType, traits};
20
21#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
31pub struct PingReq {}
32
33util::ping_packet_decode_impl!(PingReq, PacketType::PingReq);
35util::ping_packet_encode_impl!(PingReq, PacketType::PingReq);
36
37impl traits::PingReq for PingReq {}
38
39#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
49pub struct PingResp {}
50
51util::ping_packet_decode_impl!(PingResp, PacketType::PingResp);
53util::ping_packet_encode_impl!(PingResp, PacketType::PingResp);
54
55impl traits::PingResp for PingResp {}
56
57#[cfg(test)]
58mod tests {
59 use super::*;
60 use crate::codec::PacketCodec;
61 use crate::codec::{Decode, Encode};
62 use bytes::BytesMut;
63 use tokio_util::codec::Decoder;
64
65 #[test]
66 fn pingreq_decode() {
67 let mut codec = PacketCodec::new(None, None);
68
69 let data = &[
70 (PacketType::PingReq as u8) << 4, 0x00, ];
73
74 let mut stream = BytesMut::new();
75
76 stream.extend_from_slice(&data[..]);
77
78 let raw_packet = codec.decode(&mut stream).unwrap().unwrap();
79 let packet = PingReq::decode(raw_packet).unwrap();
80
81 assert_eq!(packet, PingReq::default());
82 }
83
84 #[test]
85 fn pingreq_encode() {
86 let packet = PingReq::default();
87
88 let mut stream = BytesMut::new();
89 packet.encode(&mut stream).unwrap();
90 assert_eq!(stream, vec![(PacketType::PingReq as u8) << 4, 0x00]);
91 }
92
93 #[test]
94 fn pingresp_decode() {
95 let mut codec = PacketCodec::new(None, None);
96
97 let data = &[
98 (PacketType::PingResp as u8) << 4, 0x00, ];
101
102 let mut stream = BytesMut::new();
103
104 stream.extend_from_slice(&data[..]);
105
106 let raw_packet = codec.decode(&mut stream).unwrap().unwrap();
107 let packet = PingResp::decode(raw_packet).unwrap();
108
109 assert_eq!(packet, PingResp::default());
110 }
111
112 #[test]
113 fn pingresp_encode() {
114 let packet = PingResp::default();
115
116 let mut stream = BytesMut::new();
117 packet.encode(&mut stream).unwrap();
118 assert_eq!(stream, vec![(PacketType::PingResp as u8) << 4, 0x00]);
119 }
120}