mqute_codec/protocol/v5/
ping.rs1use super::util;
19use crate::protocol::PacketType;
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
37#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
47pub struct PingResp {}
48
49util::ping_packet_decode_impl!(PingResp, PacketType::PingResp);
51util::ping_packet_encode_impl!(PingResp, PacketType::PingResp);
52
53#[cfg(test)]
54mod tests {
55 use super::*;
56 use crate::codec::PacketCodec;
57 use crate::codec::{Decode, Encode};
58 use bytes::BytesMut;
59 use tokio_util::codec::Decoder;
60
61 #[test]
62 fn pingreq_decode() {
63 let mut codec = PacketCodec::new(None, None);
64
65 let data = &[
66 (PacketType::PingReq as u8) << 4, 0x00, ];
69
70 let mut stream = BytesMut::new();
71
72 stream.extend_from_slice(&data[..]);
73
74 let raw_packet = codec.decode(&mut stream).unwrap().unwrap();
75 let packet = PingReq::decode(raw_packet).unwrap();
76
77 assert_eq!(packet, PingReq::default());
78 }
79
80 #[test]
81 fn pingreq_encode() {
82 let packet = PingReq::default();
83
84 let mut stream = BytesMut::new();
85 packet.encode(&mut stream).unwrap();
86 assert_eq!(stream, vec![(PacketType::PingReq as u8) << 4, 0x00]);
87 }
88
89 #[test]
90 fn pingresp_decode() {
91 let mut codec = PacketCodec::new(None, None);
92
93 let data = &[
94 (PacketType::PingResp as u8) << 4, 0x00, ];
97
98 let mut stream = BytesMut::new();
99
100 stream.extend_from_slice(&data[..]);
101
102 let raw_packet = codec.decode(&mut stream).unwrap().unwrap();
103 let packet = PingResp::decode(raw_packet).unwrap();
104
105 assert_eq!(packet, PingResp::default());
106 }
107
108 #[test]
109 fn pingresp_encode() {
110 let packet = PingResp::default();
111
112 let mut stream = BytesMut::new();
113 packet.encode(&mut stream).unwrap();
114 assert_eq!(stream, vec![(PacketType::PingResp as u8) << 4, 0x00]);
115 }
116}