mqtt/packet/
disconnect.rs

1//! DISCONNECT
2
3use std::io::Read;
4
5use crate::control::{ControlType, FixedHeader, PacketType};
6use crate::packet::{DecodablePacket, PacketError};
7
8/// `DISCONNECT` packet
9#[derive(Debug, Eq, PartialEq, Clone)]
10pub struct DisconnectPacket {
11    fixed_header: FixedHeader,
12}
13
14encodable_packet!(DisconnectPacket());
15
16impl DisconnectPacket {
17    pub fn new() -> DisconnectPacket {
18        DisconnectPacket {
19            fixed_header: FixedHeader::new(PacketType::with_default(ControlType::Disconnect), 0),
20        }
21    }
22}
23
24impl Default for DisconnectPacket {
25    fn default() -> DisconnectPacket {
26        DisconnectPacket::new()
27    }
28}
29
30impl DecodablePacket for DisconnectPacket {
31    type DecodePacketError = std::convert::Infallible;
32
33    fn decode_packet<R: Read>(_reader: &mut R, fixed_header: FixedHeader) -> Result<Self, PacketError<Self>> {
34        Ok(DisconnectPacket { fixed_header })
35    }
36}