summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Müller <neikos@neikos.email>2024-03-21 13:32:41 +0100
committerMarcel Müller <neikos@neikos.email>2024-03-21 13:32:41 +0100
commit6f85d8a46453cfaeff6569167e3583f1742b06c1 (patch)
tree453590ec079cbd3e3bfc1ace95fe0692d7087ca3
parent5dd15e30321046bc0401e22a09112545bf731b18 (diff)
Add MPublish::write
Signed-off-by: Marcel Müller <neikos@neikos.email>
-rw-r--r--mqtt-format/src/v5/packets/publish.rs11
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 {