aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorLibravatar Silas Bartha <[email protected]>2024-12-11 03:36:50 -0500
committerLibravatar Silas Bartha <[email protected]>2024-12-11 03:36:50 -0500
commit070ae7a6ac8daf7a5d5abecc5a45b78611883246 (patch)
tree1a1b83a072b0ee195158be26d153a1d7ebfede7c /src/main.rs
parent4c99274340d741d61aa4eb71f51241826f896cf4 (diff)
Added automatic retry + updated dependenciesv1.5.0
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/main.rs b/src/main.rs
index 3a8bcb0..97e28b5 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,6 +1,6 @@
-use std::sync::{Mutex, Arc};
+use std::sync::{Arc, Mutex};
use std::{thread::sleep, time::Duration};
-use zbus::{ConnectionBuilder, Result};
+use zbus::{connection::Builder, Result};
use crate::config::PomdConfig;
use crate::interface::PomdInterface;
@@ -14,12 +14,27 @@ mod pomd;
async fn main() -> Result<()> {
let config: PomdConfig = confy::load("pomd", "config").expect("Failed to load config!");
let pomd = Arc::new(Mutex::new(Pomd::new(config)));
- let pomd_interface = PomdInterface::new(pomd.clone());
- let _connection = ConnectionBuilder::session()?
- .name("dev.exvacuum.pomd")?
- .serve_at("/dev/exvacuum/pomd", pomd_interface)?
- .build()
- .await?;
+ let mut _connection;
+ loop {
+ let pomd_interface = PomdInterface::new(pomd.clone());
+ match Builder::session()?
+ .name("dev.exvacuum.pomd")?
+ .serve_at("/dev/exvacuum/pomd", pomd_interface)?
+ .build()
+ .await
+ {
+ Ok(connection) => {
+ _connection = connection;
+ break;
+ }
+ Err(e) => {
+ eprintln!("Failed to start D-Bus session: {e:?}");
+ eprintln!("Trying again in 10 seconds...");
+ sleep(Duration::from_secs(10));
+ continue;
+ }
+ }
+ }
loop {
pomd.lock().unwrap().update();
sleep(Duration::from_millis(100));