summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Müller <neikos@neikos.email>2024-03-21 13:29:03 +0100
committerMarcel Müller <neikos@neikos.email>2024-03-21 13:29:03 +0100
commit271391d5224e985c4f81ea996a966a1c3d6561d4 (patch)
treeb827803935a03607264e44ed602054c399bf5982
parent29916db508a14d0b90eabfa20f84f6795d6036c0 (diff)
Implement MSuback::write
Signed-off-by: Marcel Müller <neikos@neikos.email>
-rw-r--r--mqtt-format/src/v5/packets/suback.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/mqtt-format/src/v5/packets/suback.rs b/mqtt-format/src/v5/packets/suback.rs
index ee185a5..6f1e6a2 100644
--- a/mqtt-format/src/v5/packets/suback.rs
+++ b/mqtt-format/src/v5/packets/suback.rs
@@ -10,6 +10,8 @@ use winnow::Parser;
use crate::v5::variable_header::PacketIdentifier;
use crate::v5::variable_header::ReasonString;
use crate::v5::variable_header::UserProperties;
+use crate::v5::write::WResult;
+use crate::v5::write::WriteMqttPacket;
use crate::v5::MResult;
crate::v5::reason_code::make_combined_reason_code! {
@@ -76,4 +78,15 @@ impl<'i> MSuback<'i> {
})
.parse_next(input)
}
+
+ pub async fn write<W: WriteMqttPacket>(&self, buffer: &mut W) -> WResult<W> {
+ self.packet_identifier.write(buffer).await?;
+ self.properties.write(buffer).await?;
+
+ // SAFETY: We know SubackReasonCode is a valid u8
+ let reasons: &[u8] =
+ unsafe { core::mem::transmute::<&[SubackReasonCode], &[u8]>(self.reasons) };
+
+ buffer.write_slice(reasons).await
+ }
}