diff options
author | Marcel Müller <neikos@neikos.email> | 2024-03-27 10:37:02 +0100 |
---|---|---|
committer | Marcel Müller <neikos@neikos.email> | 2024-03-27 16:46:02 +0100 |
commit | 2dbe00f97e6c285555151514d44694605183162f (patch) | |
tree | 90d5cb38e667c40122cb0520aa49cdc241babc0e | |
parent | 2568333107af04f6c3ffb119b003b75a968716e5 (diff) |
Let the Codec directly take packets
Signed-off-by: Marcel Müller <neikos@neikos.email>
-rw-r--r-- | src/codecs.rs | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/src/codecs.rs b/src/codecs.rs index b4710d6..3b03dc7 100644 --- a/src/codecs.rs +++ b/src/codecs.rs @@ -5,7 +5,6 @@ // use mqtt_format::v5::packets::MqttPacket as FormatMqttPacket; -use tokio_util::bytes::Bytes; use tokio_util::codec::Decoder; use tokio_util::codec::Encoder; use winnow::Partial; @@ -81,16 +80,15 @@ impl Decoder for MqttPacketCodec { } } -impl Encoder<Bytes> for MqttPacketCodec { +impl Encoder<FormatMqttPacket<'_>> for MqttPacketCodec { type Error = MqttPacketCodecError; fn encode( &mut self, - packet: Bytes, + packet: FormatMqttPacket<'_>, dst: &mut tokio_util::bytes::BytesMut, ) -> Result<(), Self::Error> { - dst.extend_from_slice(&packet); - + packet.write(&mut crate::packets::MqttWriter(dst))?; Ok(()) } } @@ -117,11 +115,8 @@ mod tests { let packet = FormatMqttPacket::Pingreq(MPingreq); - packet.write(&mut MqttWriter(&mut data)).unwrap(); - - let send_data = data.clone().freeze(); tokio::spawn(async move { - framed_client.send(send_data).await.unwrap(); + framed_client.send(packet).await.unwrap(); }); let recv_packet = framed_server.next().await.unwrap().unwrap(); |