Trait Encode

Source
pub trait Encode {
    // Required methods
    fn encode(&self, buf: &mut BytesMut) -> Result<(), Error>;
    fn payload_len(&self) -> usize;
}
Expand description

A trait for encoding MQTT packets into a buffer.

Types that implement this trait can be serialized into a BytesMut buffer for transmission over the network.

Required Methods§

Source

fn encode(&self, buf: &mut BytesMut) -> Result<(), Error>

Encodes the packet into the provided buffer.

§Examples
use mqute_codec::codec::{Encode, Encoded};
use bytes::BytesMut;
use mqute_codec::Error;

struct Packet {
    payload: Vec<u8>,
}

impl Encode for Packet {
    fn encode(&self, buf: &mut BytesMut) -> Result<(), Error> {
        buf.extend_from_slice(&self.payload);
        Ok(())
    }

    fn payload_len(&self) -> usize {
        self.payload.len()
    }
}

let packet = Packet { payload: vec![0x30, 0x00] };
let mut buffer = BytesMut::new();
packet.encode(&mut buffer).unwrap();
assert_eq!(buffer.to_vec(), vec![0x30, 0x00]);
Source

fn payload_len(&self) -> usize

Returns the length of the payload in bytes.

§Examples
use mqute_codec::codec::{Encode, Encoded};
use bytes::BytesMut;
use mqute_codec::Error;

struct Packet {
    payload: Vec<u8>,
}

impl Encode for Packet {
    fn encode(&self, buf: &mut BytesMut) -> Result<(), Error> {
        buf.extend_from_slice(&self.payload);
        Ok(())
    }

    fn payload_len(&self) -> usize {
        self.payload.len()
    }
}

let packet = Packet { payload: vec![0x00, 0x01] };
assert_eq!(packet.payload_len(), 2);

Implementors§

Source§

impl Encode for mqute_codec::protocol::v3::ConnAck

Source§

impl Encode for mqute_codec::protocol::v3::Connect

Source§

impl Encode for mqute_codec::protocol::v3::SubAck

Source§

impl Encode for mqute_codec::protocol::v4::ConnAck

Source§

impl Encode for mqute_codec::protocol::v4::Connect

Source§

impl Encode for mqute_codec::protocol::v4::Disconnect

Source§

impl Encode for mqute_codec::protocol::v4::PingReq

Source§

impl Encode for mqute_codec::protocol::v4::PingResp

Source§

impl Encode for mqute_codec::protocol::v4::PubAck

Source§

impl Encode for mqute_codec::protocol::v4::PubComp

Source§

impl Encode for mqute_codec::protocol::v4::PubRec

Source§

impl Encode for mqute_codec::protocol::v4::PubRel

Source§

impl Encode for mqute_codec::protocol::v4::Publish

Source§

impl Encode for mqute_codec::protocol::v4::SubAck

Source§

impl Encode for mqute_codec::protocol::v4::Subscribe

Source§

impl Encode for mqute_codec::protocol::v4::UnsubAck

Source§

impl Encode for mqute_codec::protocol::v4::Unsubscribe

Source§

impl Encode for Auth

Source§

impl Encode for mqute_codec::protocol::v5::ConnAck

Source§

impl Encode for mqute_codec::protocol::v5::Connect

Source§

impl Encode for mqute_codec::protocol::v5::Disconnect

Source§

impl Encode for mqute_codec::protocol::v5::PingReq

Source§

impl Encode for mqute_codec::protocol::v5::PingResp

Source§

impl Encode for mqute_codec::protocol::v5::PubAck

Source§

impl Encode for mqute_codec::protocol::v5::PubComp

Source§

impl Encode for mqute_codec::protocol::v5::PubRec

Source§

impl Encode for mqute_codec::protocol::v5::PubRel

Source§

impl Encode for mqute_codec::protocol::v5::Publish

Source§

impl Encode for mqute_codec::protocol::v5::SubAck

Source§

impl Encode for mqute_codec::protocol::v5::Subscribe

Source§

impl Encode for mqute_codec::protocol::v5::UnsubAck

Source§

impl Encode for mqute_codec::protocol::v5::Unsubscribe