devises a strategy for signals
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user