From 2dbe00f97e6c285555151514d44694605183162f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20M=C3=BCller?= Date: Wed, 27 Mar 2024 10:37:02 +0100 Subject: Let the Codec directly take packets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marcel Müller --- src/codecs.rs | 13 ++++--------- 1 file 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 for MqttPacketCodec { +impl Encoder> 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(); -- cgit v1.2.3