From 2104a2f0b021f7de9de083bc9d930d0accdd1560 Mon Sep 17 00:00:00 2001 From: Alex Janka Date: Fri, 23 Feb 2024 18:08:32 +1100 Subject: [PATCH] retry --- homekit-exporter/src/main.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/homekit-exporter/src/main.rs b/homekit-exporter/src/main.rs index fea4566..4e58f28 100644 --- a/homekit-exporter/src/main.rs +++ b/homekit-exporter/src/main.rs @@ -1,7 +1,7 @@ #[macro_use] extern crate rocket; -use std::{collections::HashMap, path::PathBuf}; +use std::{collections::HashMap, path::PathBuf, time::Duration}; use clap::Parser; use homekit_controller::{ConnectedDevice, HomekitError, ServiceType}; @@ -45,7 +45,18 @@ async fn init(pairing_data: PathBuf) -> Result, let devices = homekit_controller::load(pairing_data)?; let mut connected_devices = HashMap::new(); for (k, v) in devices { - connected_devices.insert(k, v.connect().await?); + let mut num = 0; + let connected = loop { + if let Ok(v) = v.connect().await { + break Some(v); + } + num += 1; + if num > 10 { + break None; + } + tokio::time::sleep(Duration::from_millis(100)).await; + }; + connected_devices.insert(k, connected.ok_or(HomekitError::DeviceNotFound)?); } Ok(connected_devices) } else {