feat: Add retry for signal socket connection

This commit is contained in:
sinavir 2024-05-18 20:46:24 +02:00
parent a13272684d
commit a98da9d47c

View file

@ -9,6 +9,8 @@ use irc::client::prelude::*;
use irc::client::ClientStream; use irc::client::ClientStream;
use jsonrpsee::core::client::{Subscription, SubscriptionClientT}; use jsonrpsee::core::client::{Subscription, SubscriptionClientT};
use serde_json::Value; use serde_json::Value;
use tokio::time::sleep;
use core::time::Duration;
use transform::Bridge; use transform::Bridge;
use {log, pretty_env_logger}; use {log, pretty_env_logger};
@ -46,10 +48,20 @@ async fn main() -> Result<(), String> {
}; };
let init_signal = async { let init_signal = async {
log::debug!("Initializing Signal"); 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 let signal_stream = signal_client
.subscribe_receive(None) .subscribe_receive(None)
.await .await