aboutsummaryrefslogtreecommitdiffstats
path: root/crates/daemon/src/daemon.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--crates/daemon/src/daemon.rs30
1 files changed, 8 insertions, 22 deletions
diff --git a/crates/daemon/src/daemon.rs b/crates/daemon/src/daemon.rs
index 4e691be2..2e236f4e 100644
--- a/crates/daemon/src/daemon.rs
+++ b/crates/daemon/src/daemon.rs
@@ -248,7 +248,6 @@ pub(crate) trait Component: Send + Sync {
/// Events emitted during handling are queued and processed in subsequent
/// iterations, ensuring the loop eventually drains.
pub(crate) struct Daemon {
- components: Vec<Box<dyn Component>>,
handle: DaemonHandle,
}
@@ -269,14 +268,12 @@ impl Daemon {
///
/// This must be called before `run_event_loop()`. It initializes all
/// registered components with the daemon handle.
- pub(crate) async fn start_components(&mut self) -> Result<()> {
- for component in &mut self.components {
- tracing::info!(component = component.name(), "starting component");
- component
- .start(self.handle.clone())
- .await
- .with_context(|| format!("failed to start component: {}", component.name()))?;
- }
+ pub(crate) async fn start_component(&mut self, component: &mut impl Component) -> Result<()> {
+ tracing::info!(component = component.name(), "starting component");
+ component
+ .start(self.handle.clone())
+ .await
+ .with_context(|| format!("failed to start component: {}", component.name()))?;
Ok(())
}
@@ -365,7 +362,7 @@ pub(crate) struct DaemonBuilder {
settings: Settings,
store: Option<SqliteStore>,
history_db: Option<HistoryDatabase>,
- components: Vec<Box<dyn Component>>,
+ components: Vec<Arc<Box<dyn Component>>>,
}
impl DaemonBuilder {
@@ -391,14 +388,6 @@ impl DaemonBuilder {
self
}
- /// Register a component.
- ///
- /// Components are started in registration order and stopped in reverse order.
- pub(crate) fn component(mut self, component: impl Component + 'static) -> Self {
- self.components.push(Box::new(component));
- self
- }
-
/// Build the daemon.
///
/// This loads the encryption key and creates the daemon state.
@@ -428,9 +417,6 @@ impl DaemonBuilder {
// Create the handle (just a reference to the state)
let handle = DaemonHandle { state };
- Ok(Daemon {
- components: self.components,
- handle,
- })
+ Ok(Daemon { handle })
}
}