summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Müller <neikos@neikos.email>2024-03-27 10:37:02 +0100
committerMarcel Müller <neikos@neikos.email>2024-03-27 16:46:02 +0100
commit2dbe00f97e6c285555151514d44694605183162f (patch)
tree90d5cb38e667c40122cb0520aa49cdc241babc0e
parent2568333107af04f6c3ffb119b003b75a968716e5 (diff)
Let the Codec directly take packets
Signed-off-by: Marcel Müller <neikos@neikos.email>
-rw-r--r--src/codecs.rs13
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();