Private
Public Access
1
0

devises a strategy for signals

This commit is contained in:
2025-04-27 22:44:05 -07:00
parent cecfd7cd76
commit 1e9b570993
7 changed files with 91 additions and 8 deletions

View File

@@ -4,10 +4,9 @@ mod daemon;
use std::future;
use log::LevelFilter;
use std::sync::Arc;
use tokio::sync::Mutex;
use daemon::Daemon;
use daemon::signals::Signal;
use dbus::endpoint::Endpoint as DbusEndpoint;
use dbus::interface;
use dbus::server_impl::ServerImpl;
@@ -35,7 +34,7 @@ async fn main() {
let server = ServerImpl::new(daemon.event_sender.clone());
// Register DBus interfaces with endpoint
let endpoint = DbusEndpoint::new(server.clone());
let endpoint = DbusEndpoint::new(server);
endpoint.register(
interface::NAME,
interface::OBJECT_PATH,
@@ -47,6 +46,24 @@ async fn main() {
}
).await;
let mut signal_receiver = daemon.obtain_signal_receiver();
tokio::spawn(async move {
use dbus::interface::signals as DbusSignals;
while let Some(signal) = signal_receiver.recv().await {
match signal {
Signal::ConversationsUpdated => {
log::info!("Sending signal: ConversationsUpdated");
endpoint.send_signal(interface::OBJECT_PATH, DbusSignals::ConversationsUpdated{})
.unwrap_or_else(|_| {
log::error!("Failed to send signal");
0
});
}
}
}
});
daemon.run().await;
future::pending::<()>().await;