From dafc3791b5e11237e0f4f124b537c51ab7352a8a Mon Sep 17 00:00:00 2001 From: Kioubit Date: Thu, 31 Oct 2024 03:12:29 +0200 Subject: [PATCH] Error handling for explorer server --- src/modules/explorer/mod.rs | 20 ++++++++++++++------ src/modules/explorer/os_signals.rs | 4 +++- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/modules/explorer/mod.rs b/src/modules/explorer/mod.rs index e784b73..aaea555 100644 --- a/src/modules/explorer/mod.rs +++ b/src/modules/explorer/mod.rs @@ -35,7 +35,7 @@ pub fn start_explorer(registry_root: impl AsRef, port: u16) -> BoxResult { @@ -50,10 +50,15 @@ pub fn start_explorer(registry_root: impl AsRef, port: u16) -> BoxResult, port: u16) -> BoxResult>, port: u16, mut sig_chan_rx: broadcast::Receiver) { +async fn start_server(app_state: Arc>, port: u16, mut sig_chan_rx: broadcast::Receiver) -> BoxResult<()> { let addr = SocketAddr::from((IpAddr::from(Ipv6Addr::UNSPECIFIED), port)); - let listener = tokio::net::TcpListener::bind(&addr).await.unwrap(); + let listener = tokio::net::TcpListener::bind(&addr).await + .map_err(|x| format!("Error listening on TCP: {}", x))?; let app = Router::new() .route("/", get(handlers::root_handler)) .route("/*path", get(handlers::root_handler)) @@ -74,7 +80,7 @@ async fn start_server(app_state: Arc>, port: u16, mut sig_chan_ .route("/api/object/", get(handlers::get_object)) .with_state(app_state); - println!("Starting server on port {}. Send the POSIX 'SIGUSR1' signal to this process to trigger data update", port); + eprintln!("Starting server on port {}. Send the POSIX 'SIGUSR1' signal to this process to trigger data update", port); axum::serve(listener, app).with_graceful_shutdown(async move { loop { match sig_chan_rx.recv().await.unwrap() { @@ -82,5 +88,7 @@ async fn start_server(app_state: Arc>, port: u16, mut sig_chan_ CustomSignal::DataUpdate => {} } } - }).await.unwrap(); + }).await + .map_err(|e| format!("Error starting server: {}", e))?; + Ok(()) } diff --git a/src/modules/explorer/os_signals.rs b/src/modules/explorer/os_signals.rs index 9a5be6c..42dcf92 100644 --- a/src/modules/explorer/os_signals.rs +++ b/src/modules/explorer/os_signals.rs @@ -1,9 +1,10 @@ use tokio::select; use tokio::sync::broadcast; use crate::modules::explorer::CustomSignal; +use crate::modules::util::BoxResult; #[cfg(unix)] -pub(super) async fn signal_listener(sig_chan_tx: broadcast::Sender) { +pub(super) async fn signal_listener(sig_chan_tx: broadcast::Sender) -> BoxResult<()> { use tokio::signal::unix::{signal, SignalKind}; if let Ok(mut user1_signal) = signal(SignalKind::user_defined1()) { loop { @@ -25,6 +26,7 @@ pub(super) async fn signal_listener(sig_chan_tx: broadcast::Sender } } } + Ok(()) } #[cfg(windows)]