connection error
This commit is contained in:
+19
-3
@@ -15,6 +15,7 @@ const METEO_MUNICH_API_URL: &str =
|
|||||||
const LATITUDE_MUC: f64 = 48.163142;
|
const LATITUDE_MUC: f64 = 48.163142;
|
||||||
const LONGITUDE_MUC: f64 = 11.542922;
|
const LONGITUDE_MUC: f64 = 11.542922;
|
||||||
const PUBLISH_COUNT: i32 = 5;
|
const PUBLISH_COUNT: i32 = 5;
|
||||||
|
const MQTT_TIMEOUT: Duration = Duration::from_secs(10);
|
||||||
|
|
||||||
#[tokio::main(flavor = "current_thread")]
|
#[tokio::main(flavor = "current_thread")]
|
||||||
async fn main() {
|
async fn main() {
|
||||||
@@ -26,22 +27,37 @@ async fn main() {
|
|||||||
task::spawn(async move {
|
task::spawn(async move {
|
||||||
publish(client.clone(), &weather).await;
|
publish(client.clone(), &weather).await;
|
||||||
});
|
});
|
||||||
println!("test{}", 100);
|
println!("{}", 100);
|
||||||
|
|
||||||
|
let poll_result = time::timeout(MQTT_TIMEOUT, async {
|
||||||
let mut count = 0;
|
let mut count = 0;
|
||||||
|
let mut err_count = 0;
|
||||||
loop {
|
loop {
|
||||||
let event = eventloop.poll().await;
|
let event = eventloop.poll().await;
|
||||||
match &event {
|
match &event {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
if count == PUBLISH_COUNT * 2 {
|
if count >= PUBLISH_COUNT * 2 {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
count += 1;
|
count += 1;
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
println!("Error = {e:?}");
|
println!("MQTT Error = {e:?}");
|
||||||
|
err_count += 1;
|
||||||
|
if err_count >= 5 {
|
||||||
|
eprintln!("Exiting MQTT loop after 5 consecutive errors.");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
time::sleep(Duration::from_millis(200)).await;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
.await;
|
||||||
|
|
||||||
|
if poll_result.is_err() {
|
||||||
|
eprintln!("Timed out waiting for MQTT publishing to complete.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
println!("{}", e);
|
println!("{}", e);
|
||||||
|
|||||||
Reference in New Issue
Block a user