Type issue

This commit is contained in:
Ondrej Babec
2022-02-25 16:35:46 +01:00
parent cc6498a76f
commit 5729feef15
3 changed files with 37 additions and 38 deletions

View File

@@ -24,48 +24,47 @@ where
}
}
// connect -> connack -> publish -> QoS ? -> disconn
pub async fn send_message(&'a mut self, topic_name: & str, message: & str, qos: QualityOfService) -> impl Future<Output = Result<(), NetworkError>> {
async move {
let mut len = {
let mut connect = ConnectPacket::<3, 0>::clean();
connect.encode(self.buffer)
};
pub async fn send_message(&'a mut self, topic_name: & str, message: & str, qos: QualityOfService) -> Result<(), NetworkError> {
self.network_driver.send(self.buffer, len).await?;
let mut len = {
let mut connect = ConnectPacket::<3, 0>::clean();
connect.encode(self.buffer)
};
//connack
let connack = {
let connack = self.receive().await?;
let mut packet = ConnackPacket::new();
packet.decode(&mut BuffReader::new(self.buffer));
packet
};
self.network_driver.send(self.buffer, len).await ?;
if connack.connect_reason_code != 0x00 {
todo!();
}
//connack
let connack = {
self.receive().await ?;
let mut packet = ConnackPacket::new();
packet.decode(&mut BuffReader::new(self.buffer));
packet
};
// publish
len = {
let mut packet = PublishPacket::<5>::new(topic_name, message);
packet.encode(self.buffer)
};
self.network_driver.send(self.buffer, len).await?;
//QoS1
if <QualityOfService as Into<u8>>::into(qos) == <QualityOfService as Into<u8>>::into(QoS1) {
todo!();
}
//Disconnect
let mut disconnect = DisconnectPacket::<5>::new();
len = disconnect.encode(self.buffer);
self.network_driver.send(self.buffer, len);
Ok(())
if connack.connect_reason_code != 0x00 {
todo!();
}
// publish
len = {
let mut packet = PublishPacket::<5>::new(topic_name, message);
packet.encode(self.buffer)
};
self.network_driver.send(self.buffer, len).await ?;
//QoS1
if <QualityOfService as Into<u8>>::into(qos) == <QualityOfService as Into<u8>>::into(QoS1) {
todo!();
}
//Disconnect
let mut disconnect = DisconnectPacket::<5>::new();
len = disconnect.encode(self.buffer);
self.network_driver.send(self.buffer, len);
Ok(())
}
pub async fn receive(&'a mut self) -> Result<(), NetworkError> {