diff --git a/crates/colibri-daemon/src/main.rs b/crates/colibri-daemon/src/main.rs index dd2544f..cedce92 100644 --- a/crates/colibri-daemon/src/main.rs +++ b/crates/colibri-daemon/src/main.rs @@ -9,7 +9,7 @@ use std::sync::Arc; -use colibri_daemon::{session, socket, DaemonConfig, DaemonState, SharedState}; +use colibri_daemon::{daemon, session, socket, DaemonConfig, DaemonState, SharedState}; use tracing::info; #[tokio::main] @@ -75,6 +75,14 @@ async fn main() -> Result<(), Box> { socket::serve(socket_state, socket_shutdown).await; }); + // Start the daemon background loop (heartbeat, session rotation, scheduler) + let loop_state = state.clone(); + let loop_shutdown = state.shutdown_rx.resubscribe(); + let loop_config = daemon::DaemonLoopConfig::default(); + let loop_handle = tokio::spawn(async move { + daemon::run_loop(loop_state, loop_config, loop_shutdown).await; + }); + // Listen for shutdown signals let shutdown_state = state.clone(); tokio::spawn(async move { @@ -93,8 +101,11 @@ async fn main() -> Result<(), Box> { } }); - // Wait for the socket server to finish - socket_handle.await?; + // Wait for the socket server and daemon loop to finish + tokio::select! { + _ = socket_handle => {}, + _ = loop_handle => {}, + } info!("colibri-daemon shut down cleanly"); Ok(())