From a98da9d47c7fa944a66f4fb5f658cf2d69aab120 Mon Sep 17 00:00:00 2001 From: sinavir Date: Sat, 18 May 2024 20:46:24 +0200 Subject: [PATCH] feat: Add retry for signal socket connection --- src/main.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main.rs b/src/main.rs index 88ffc97..de43c66 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,6 +9,8 @@ use irc::client::prelude::*; use irc::client::ClientStream; use jsonrpsee::core::client::{Subscription, SubscriptionClientT}; use serde_json::Value; +use tokio::time::sleep; +use core::time::Duration; use transform::Bridge; use {log, pretty_env_logger}; @@ -46,10 +48,20 @@ async fn main() -> Result<(), String> { }; let init_signal = async { log::debug!("Initializing Signal"); + let signal_client = (async { + for i in 0..10 { + match jsonrpc::connect_unix(&config.signal.socket).await { + Ok(client) => { + return Ok(client); + }, Err(e) => { + log::info!("failed attempt {} connect to signal-cli socket: {:?}. Retrying", i, e); + }, + } + sleep(Duration::from_secs(1)).await; + }; + return Err("Trying too many times to open socket"); - let signal_client = jsonrpc::connect_unix(config.signal.socket) - .await - .map_err(|e| format!("failed to connect to signal socket: {e}"))?; + }).await.map_err(|e| format!("failed to connect to signal socket: {e}"))?; let signal_stream = signal_client .subscribe_receive(None) .await