Private
Public Access
1
0

daemon: reorg: use channels for comms instead of copying daemon arc/mutex

This commit is contained in:
2025-04-27 12:53:45 -07:00
parent ef74df9f28
commit 22554a7644
4 changed files with 124 additions and 78 deletions

View File

@@ -2,7 +2,6 @@ mod dbus;
mod daemon;
use std::future;
use std::sync::mpsc;
use log::LevelFilter;
use std::sync::Arc;
@@ -24,22 +23,16 @@ fn initialize_logging() {
async fn main() {
initialize_logging();
let (sender, receiver) = mpsc::channel::<daemon::Event>();
// Create the daemon
let daemon = Arc::new(
Mutex::new(
Daemon::new()
.map_err(|e| {
log::error!("Failed to start daemon: {}", e);
std::process::exit(1);
})
.unwrap()
)
);
let mut daemon = Daemon::new()
.map_err(|e| {
log::error!("Failed to start daemon: {}", e);
std::process::exit(1);
})
.unwrap();
// Create the server implementation
let server = ServerImpl::new(daemon.clone(), sender);
let server = ServerImpl::new(daemon.event_sender.clone());
// Register DBus interfaces with endpoint
let endpoint = DbusEndpoint::new(server.clone());
@@ -54,12 +47,7 @@ async fn main() {
}
).await;
tokio::spawn(async move {
for event in receiver {
// Important! Only lock the daemon when handling events.
daemon.lock().await.handle_event(event).await;
}
});
daemon.run().await;
future::pending::<()>().await;
unreachable!()