diff options
| author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2026-07-20 14:18:36 +0200 |
|---|---|---|
| committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2026-07-20 14:18:36 +0200 |
| commit | 63a0ec3901a863fb07d18f4b814a98a813644382 (patch) | |
| tree | c94b7b501601b5df05cf654e9f9c9b5bc66a239e /crates/daemon/src/lib.rs | |
| parent | chore: Commit (diff) | |
| download | atuin-63a0ec3901a863fb07d18f4b814a98a813644382.zip | |
chore: Commit
Diffstat (limited to 'crates/daemon/src/lib.rs')
| -rw-r--r-- | crates/daemon/src/lib.rs | 53 |
1 files changed, 16 insertions, 37 deletions
diff --git a/crates/daemon/src/lib.rs b/crates/daemon/src/lib.rs index a5d233c6..3be39a1c 100644 --- a/crates/daemon/src/lib.rs +++ b/crates/daemon/src/lib.rs @@ -1,25 +1,30 @@ -use crate::aclient::database::ClientSqlite as HistoryDatabase; +#![expect(unused_crate_dependencies, reason = "Didn't remove them yet")] + +use std::sync::Arc; + use crate::aclient::record::sqlite_store::SqliteStore; -use crate::aclient::settings::{Settings, watcher::global_settings_watcher}; +use crate::aclient::settings::Settings; +use crate::api::server::control::ControlService; +use crate::{ + aclient::database::ClientSqlite as HistoryDatabase, + api::generated::history::history_server::HistoryServer, +}; use eyre::Result; pub mod aclient; -pub mod client; +pub(crate) mod api; pub(crate) mod components; -pub(crate) mod control; pub(crate) mod daemon; pub(crate) mod events; pub(crate) mod server; -pub(crate) mod generated; - // Re-export core daemon types for convenience pub(crate) use daemon::Daemon; pub use events::DaemonEvent; // Re-export components -pub(crate) use components::{HistoryComponent, SemanticComponent, SyncComponent}; +pub(crate) use components::{HistoryComponent, SyncComponent}; /// Boot the daemon using the new component-based architecture. /// @@ -31,53 +36,28 @@ pub async fn boot( history_db: HistoryDatabase, ) -> Result<()> { // Create the components - let history_component = HistoryComponent::new(); - let semantic_component = SemanticComponent::new(); - let sync_component = SyncComponent::new(); + let history_component = Arc::new(HistoryComponent::new()); + let sync_component = Arc::new(Box::new(&SyncComponent::new())); // Get the gRPC services before moving components into the daemon // (The services share state with the components via Arc) - let history_service = history_component.grpc_service(); - let semantic_service = semantic_component.grpc_service(); + let history_service = HistoryServer::from_arc(Arc::clone(&history_component)); // Build the daemon let mut daemon = Daemon::builder(settings.clone()) .store(store) .history_db(history_db) .component(history_component) - .component(semantic_component) .component(sync_component) .build()?; - // Get a handle for the control service and gRPC server shutdown let handle = daemon.handle(); - // Create the control service - let control_service = control::ControlService::new(handle.clone()); + let control_service = ControlService::new(handle.clone()); // Start all components first (so gRPC services can work) daemon.start_components().await?; - // Spawn config file watcher to reload settings on changes - if let Ok(watcher) = global_settings_watcher() { - let mut settings_rx = watcher.subscribe(); - let watcher_handle = handle.clone(); - tokio::spawn(async move { - tracing::info!("config file watcher started"); - while settings_rx.changed().await.is_ok() { - // Use the already-loaded settings from the watcher - // (avoids parsing the config file twice) - let new_settings = (*settings_rx.borrow()).clone(); - watcher_handle.apply_settings((*new_settings).clone()).await; - } - tracing::debug!("config file watcher stopped"); - }); - } else { - tracing::warn!( - "failed to start config file watcher; settings changes will require daemon restart" - ); - } - // Spawn signal handler to emit ShutdownRequested on Ctrl+C/SIGTERM let signal_handle = handle.clone(); tokio::spawn(async move { @@ -89,7 +69,6 @@ pub async fn boot( server::run_grpc_server( &settings, history_service, - semantic_service, control_service.into_server(), handle, )?; |
