Private
Public Access
1
0

Started to factor out DbusRegistry from Endpoint

This commit is contained in:
2025-05-26 15:49:29 -07:00
parent c02d4ecdf3
commit 831e490eb4
3 changed files with 92 additions and 44 deletions

View File

@@ -5,9 +5,9 @@ use log::LevelFilter;
use std::future;
use daemon::signals::Signal;
use daemon::{Attachment, Daemon};
use daemon::Daemon;
use dbus::endpoint::Endpoint as DbusEndpoint;
use dbus::endpoint::DbusRegistry;
use dbus::interface;
use dbus::server_impl::ServerImpl;
use dbus_tokio::connection;
@@ -54,32 +54,20 @@ async fn main() {
.await
.expect("Unable to acquire dbus name");
let attachment = Attachment {
guid: "asdf".into(),
path: "/dev/null".into(),
downloaded: false,
};
// Create shared D-Bus registry
let dbus_registry = DbusRegistry::new(connection.clone());
let att_endpoint = DbusEndpoint::new(connection.clone(), attachment);
att_endpoint
.register_object("/net/buzzert/kordophonecd/attachments/test", |cr| {
vec![interface::register_net_buzzert_kordophone_attachment(cr)]
})
.await;
// Create and register server implementation
let server = ServerImpl::new(daemon.event_sender.clone(), dbus_registry.clone());
// Create the server implementation
let server = ServerImpl::new(connection.clone(), daemon.event_sender.clone());
// Register DBus interfaces with endpoint
let endpoint = DbusEndpoint::new(connection.clone(), server);
endpoint
.register_object(interface::OBJECT_PATH, |cr| {
vec![
interface::register_net_buzzert_kordophone_repository(cr),
interface::register_net_buzzert_kordophone_settings(cr),
]
})
.await;
dbus_registry.register_object(
interface::OBJECT_PATH,
server,
|cr| vec![
interface::register_net_buzzert_kordophone_repository(cr),
interface::register_net_buzzert_kordophone_settings(cr),
]
);
let mut signal_receiver = daemon.obtain_signal_receiver();
tokio::spawn(async move {
@@ -89,7 +77,7 @@ async fn main() {
match signal {
Signal::ConversationsUpdated => {
log::debug!("Sending signal: ConversationsUpdated");
endpoint
dbus_registry
.send_signal(interface::OBJECT_PATH, DbusSignals::ConversationsUpdated {})
.unwrap_or_else(|_| {
log::error!("Failed to send signal");
@@ -102,7 +90,7 @@ async fn main() {
"Sending signal: MessagesUpdated for conversation {}",
conversation_id
);
endpoint
dbus_registry
.send_signal(
interface::OBJECT_PATH,
DbusSignals::MessagesUpdated { conversation_id },