pub enum MqttCodec {
V3(Codec),
V5(Codec),
Version(VersionCodec),
}
Expand description
Main MQTT protocol codec implementation
Handles version negotiation and provides unified interface for:
- MQTT v3.1.1
- MQTT v5.0
- Protocol version detection
Variants§
V3(Codec)
MQTT v3.1.1 codec
V5(Codec)
MQTT v5.0 codec
Version(VersionCodec)
Protocol version detection codec (used during initial handshake)
Trait Implementations§
Source§impl Decoder for MqttCodec
impl Decoder for MqttCodec
Source§fn decode(
&mut self,
src: &mut BytesMut,
) -> Result<Option<Self::Item>, Self::Error>
fn decode( &mut self, src: &mut BytesMut, ) -> Result<Option<Self::Item>, Self::Error>
Decodes network bytes into MQTT packets
Returns tuple containing:
- Decoded packet
- Number of bytes consumed from input buffer
§Example
use bytes::{BytesMut, BufMut};
use rmqtt_codec::{MqttCodec, v3};
use tokio_util::codec::Decoder;
let mut codec = MqttCodec::V3(v3::Codec::new(1024*1024));
let mut buffer = BytesMut::new();
buffer.put_slice(b"\x30\x00"); // Publish packet
let packet = codec.decode(&mut buffer);
Source§type Item = (MqttPacket, u32)
type Item = (MqttPacket, u32)
The type of decoded frames.
Source§type Error = DecodeError
type Error = DecodeError
The type of unrecoverable frame decoding errors. Read more
Source§impl Encoder<MqttPacket> for MqttCodec
impl Encoder<MqttPacket> for MqttCodec
Source§fn encode(
&mut self,
item: MqttPacket,
dst: &mut BytesMut,
) -> Result<(), Self::Error>
fn encode( &mut self, item: MqttPacket, dst: &mut BytesMut, ) -> Result<(), Self::Error>
Encodes MQTT packets according to active protocol version
§Example
use bytes::BytesMut;
use rmqtt_codec::{MqttCodec, MqttPacket, v3};
use tokio_util::codec::Encoder;
let mut codec = MqttCodec::V3(v3::Codec::new(1024*1024));
let mut buffer = BytesMut::new();
let packet = MqttPacket::V3(v3::Packet::PingRequest);
codec.encode(packet, &mut buffer).unwrap();
Source§type Error = EncodeError
type Error = EncodeError
The type of encoding errors. Read more
Auto Trait Implementations§
impl !Freeze for MqttCodec
impl !RefUnwindSafe for MqttCodec
impl Send for MqttCodec
impl !Sync for MqttCodec
impl Unpin for MqttCodec
impl UnwindSafe for MqttCodec
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more