Decode

Trait Decode 

Source
pub trait Decode: Sized {
    // Required method
    fn decode(packet: RawPacket) -> Result<Self, Error>;
}
Expand description

A trait for decoding MQTT packets from their raw representation.

Types that implement this trait can be decoded from a RawPacket. This is useful for deserializing MQTT packets received over the network.

Required Methods§

Source

fn decode(packet: RawPacket) -> Result<Self, Error>

Decodes a raw MQTT packet into the implementing type.

§Examples
use mqute_codec::protocol::{FixedHeader, PacketType};
use mqute_codec::codec::{Decode, RawPacket};
use mqute_codec::Error;
use bytes::Bytes;


struct Packet {
    header: FixedHeader,
    payload: Vec<u8>,
}

impl Decode for Packet {
    fn decode(packet: RawPacket) -> Result<Self, Error> {
        let header = packet.header;
        let payload = packet.payload.to_vec();
        Ok(Packet { header, payload })
    }
}

let header = FixedHeader::new(PacketType::Connect, 2);
let raw_packet = RawPacket::new(header.clone(), Bytes::copy_from_slice(&[0x00, 0x01])); // Example raw packet
let packet = Packet::decode(raw_packet).unwrap();
assert_eq!(packet.header, header);
assert_eq!(packet.payload, vec![0x00, 0x01]);

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl Decode for mqute_codec::protocol::v3::ConnAck

Source§

impl Decode for mqute_codec::protocol::v3::Connect

Source§

impl Decode for mqute_codec::protocol::v3::SubAck

Source§

impl Decode for mqute_codec::protocol::v4::ConnAck

Source§

impl Decode for mqute_codec::protocol::v4::Connect

Source§

impl Decode for mqute_codec::protocol::v4::Disconnect

Source§

impl Decode for mqute_codec::protocol::v4::PingReq

Source§

impl Decode for mqute_codec::protocol::v4::PingResp

Source§

impl Decode for mqute_codec::protocol::v4::PubAck

Source§

impl Decode for mqute_codec::protocol::v4::PubComp

Source§

impl Decode for mqute_codec::protocol::v4::PubRec

Source§

impl Decode for mqute_codec::protocol::v4::PubRel

Source§

impl Decode for mqute_codec::protocol::v4::Publish

Source§

impl Decode for mqute_codec::protocol::v4::SubAck

Source§

impl Decode for mqute_codec::protocol::v4::Subscribe

Source§

impl Decode for mqute_codec::protocol::v4::UnsubAck

Source§

impl Decode for mqute_codec::protocol::v4::Unsubscribe

Source§

impl Decode for Auth

Source§

impl Decode for mqute_codec::protocol::v5::ConnAck

Source§

impl Decode for mqute_codec::protocol::v5::Connect

Source§

impl Decode for mqute_codec::protocol::v5::Disconnect

Source§

impl Decode for mqute_codec::protocol::v5::PingReq

Source§

impl Decode for mqute_codec::protocol::v5::PingResp

Source§

impl Decode for mqute_codec::protocol::v5::PubAck

Source§

impl Decode for mqute_codec::protocol::v5::PubComp

Source§

impl Decode for mqute_codec::protocol::v5::PubRec

Source§

impl Decode for mqute_codec::protocol::v5::PubRel

Source§

impl Decode for mqute_codec::protocol::v5::Publish

Source§

impl Decode for mqute_codec::protocol::v5::SubAck

Source§

impl Decode for mqute_codec::protocol::v5::Subscribe

Source§

impl Decode for mqute_codec::protocol::v5::UnsubAck

Source§

impl Decode for mqute_codec::protocol::v5::Unsubscribe