diff options
author | Marcel Müller <neikos@neikos.email> | 2024-03-21 13:32:41 +0100 |
---|---|---|
committer | Marcel Müller <neikos@neikos.email> | 2024-03-21 13:32:41 +0100 |
commit | 6f85d8a46453cfaeff6569167e3583f1742b06c1 (patch) | |
tree | 453590ec079cbd3e3bfc1ace95fe0692d7087ca3 | |
parent | 5dd15e30321046bc0401e22a09112545bf731b18 (diff) |
Add MPublish::write
Signed-off-by: Marcel Müller <neikos@neikos.email>
-rw-r--r-- | mqtt-format/src/v5/packets/publish.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/mqtt-format/src/v5/packets/publish.rs b/mqtt-format/src/v5/packets/publish.rs index bae5498..da73623 100644 --- a/mqtt-format/src/v5/packets/publish.rs +++ b/mqtt-format/src/v5/packets/publish.rs @@ -11,6 +11,7 @@ use winnow::Bytes; use winnow::Parser; use crate::v5::fixed_header::QualityOfService; +use crate::v5::strings::write_string; use crate::v5::variable_header::ContentType; use crate::v5::variable_header::CorrelationData; use crate::v5::variable_header::MessageExpiryInterval; @@ -19,6 +20,8 @@ use crate::v5::variable_header::ResponseTopic; use crate::v5::variable_header::SubscriptionIdentifier; use crate::v5::variable_header::TopicAlias; use crate::v5::variable_header::UserProperties; +use crate::v5::write::WResult; +use crate::v5::write::WriteMqttPacket; use crate::v5::MResult; #[derive(Debug)] @@ -96,6 +99,14 @@ impl<'i> MPublish<'i> { }) .parse_next(input) } + + pub async fn write<W: WriteMqttPacket>(&self, buffer: &mut W) -> WResult<W> { + write_string(buffer, self.topic_name).await?; + self.packet_identifier.write(buffer).await?; + self.properties.write(buffer).await?; + + buffer.write_slice(self.payload).await + } } fn sanity_check_topic_name(topic_name: &str) -> bool { |