feat(mqtt): distinguish mqtt error domains

This commit is contained in:
shimun 2024-05-10 11:38:24 +02:00
parent 97934dc6f8
commit 3428419c51
Signed by: shimun
GPG Key ID: E0420647856EA39E

View File

@ -23,7 +23,8 @@ pub enum SendError {
NXDomain(&'static str), NXDomain(&'static str),
Tls(TlsError), Tls(TlsError),
Connect(ConnectError), Connect(ConnectError),
MqttReason(ReasonCode), MqttConnect(ReasonCode),
MqttPublish(ReasonCode),
Timeout(TimeoutError), Timeout(TimeoutError),
} }
@ -64,7 +65,7 @@ macro_rules! from_impl {
from_impl!(DnsError, Dns); from_impl!(DnsError, Dns);
from_impl!(TlsError, Tls); from_impl!(TlsError, Tls);
from_impl!(ConnectError, Connect); from_impl!(ConnectError, Connect);
from_impl!(ReasonCode, MqttReason); from_impl!(ReasonCode, MqttConnect);
from_impl!(TimeoutError, Timeout); from_impl!(TimeoutError, Timeout);
const MQTT_SERVER_HOSTNAME: &str = "mqtt.shimun.net"; const MQTT_SERVER_HOSTNAME: &str = "mqtt.shimun.net";
@ -182,7 +183,8 @@ pub async fn send_message(
rust_mqtt::packet::v5::publish_packet::QualityOfService::QoS1, rust_mqtt::packet::v5::publish_packet::QualityOfService::QoS1,
true, true,
) )
.await?; .await
.map_err(SendError::MqttPublish)?;
} }
let after_mqtt_pub = Instant::now(); let after_mqtt_pub = Instant::now();
info!( info!(