From 68ff158d6cea4da9c1e9d45d0490f0315573f435 Mon Sep 17 00:00:00 2001 From: James Magahern Date: Wed, 12 Feb 2025 00:26:32 -0800 Subject: [PATCH] kordophoned: reorg: server impl in separate file, skeleton for conversations --- .../net.buzzert.kordophonecd.Server.xml | 11 ++++++ kordophoned/src/daemon/mod.rs | 2 -- kordophoned/src/dbus/endpoint.rs | 35 +++++-------------- kordophoned/src/dbus/mod.rs | 13 ++++--- kordophoned/src/dbus/server_impl.rs | 16 +++++++++ 5 files changed, 45 insertions(+), 32 deletions(-) create mode 100644 kordophoned/src/dbus/server_impl.rs diff --git a/kordophoned/include/net.buzzert.kordophonecd.Server.xml b/kordophoned/include/net.buzzert.kordophonecd.Server.xml index 4e2b4b9..954009f 100644 --- a/kordophoned/include/net.buzzert.kordophonecd.Server.xml +++ b/kordophoned/include/net.buzzert.kordophonecd.Server.xml @@ -4,5 +4,16 @@ + + + + + + diff --git a/kordophoned/src/daemon/mod.rs b/kordophoned/src/daemon/mod.rs index 5f75ab0..0cdb6aa 100644 --- a/kordophoned/src/daemon/mod.rs +++ b/kordophoned/src/daemon/mod.rs @@ -1,5 +1,3 @@ -use std::sync::Arc; - pub struct Daemon { pub version: String, } diff --git a/kordophoned/src/dbus/endpoint.rs b/kordophoned/src/dbus/endpoint.rs index 66f6350..33cb906 100644 --- a/kordophoned/src/dbus/endpoint.rs +++ b/kordophoned/src/dbus/endpoint.rs @@ -1,26 +1,16 @@ -use crate::{dbus::interface::OBJECT_PATH, daemon::Daemon}; +use log::info; +use std::sync::Arc; +use crate::{daemon::Daemon, dbus::interface}; -use crossroads::Crossroads; +use dbus_crossroads::Crossroads; +use dbus_tokio::connection; use dbus::{ - channel::{MatchingReceiver, Sender}, message::MatchRule, nonblock::SyncConnection, + channel::{Sender, MatchingReceiver}, Path, }; -use dbus_crossroads as crossroads; -use dbus_tokio::connection; -use dbus_tree::{DataType, MethodErr}; -use log::info; -use std::{future::Future, sync::Arc, thread}; - -mod dbus_interface { - #![allow(unused)] - include!(concat!(env!("OUT_DIR"), "/kordophone-server.rs")); -} - -use dbus_interface::NetBuzzertKordophoneServer; - pub struct Endpoint { connection: Arc, daemon: Arc, @@ -62,8 +52,8 @@ impl Endpoint { ))); // Register the daemon as a D-Bus object. - let token = dbus_interface::register_net_buzzert_kordophone_server(&mut cr); - cr.insert(OBJECT_PATH, &[token], self.daemon.clone()); + let token = interface::register_net_buzzert_kordophone_server(&mut cr); + cr.insert(interface::OBJECT_PATH, &[token], self.daemon.clone()); // Start receiving messages. self.connection.start_receive( @@ -80,14 +70,7 @@ impl Endpoint { where S: dbus::message::SignalArgs + dbus::arg::AppendAll, { - let message = signal.to_emit_message(&Path::new(OBJECT_PATH).unwrap()); + let message = signal.to_emit_message(&Path::new(interface::OBJECT_PATH).unwrap()); self.connection.send(message) } - -} - -impl NetBuzzertKordophoneServer for Arc { - fn get_version(&mut self) -> Result { - Ok(self.version.clone()) - } } diff --git a/kordophoned/src/dbus/mod.rs b/kordophoned/src/dbus/mod.rs index e178de5..ff97742 100644 --- a/kordophoned/src/dbus/mod.rs +++ b/kordophoned/src/dbus/mod.rs @@ -1,6 +1,11 @@ pub mod endpoint; +mod server_impl; -pub mod interface { - pub static NAME: &str = "net.buzzert.kordophonecd"; - pub static OBJECT_PATH: &str = "/net/buzzert/kordophone/Server"; -} +mod interface { + #![allow(unused)] + + pub const NAME: &str = "net.buzzert.kordophonecd"; + pub const OBJECT_PATH: &str = "/net/buzzert/kordophonecd"; + + include!(concat!(env!("OUT_DIR"), "/kordophone-server.rs")); +} \ No newline at end of file diff --git a/kordophoned/src/dbus/server_impl.rs b/kordophoned/src/dbus/server_impl.rs new file mode 100644 index 0000000..b356a81 --- /dev/null +++ b/kordophoned/src/dbus/server_impl.rs @@ -0,0 +1,16 @@ +use dbus::arg; +use dbus_tree::MethodErr; +use std::sync::Arc; + +use crate::daemon::Daemon; +use crate::dbus::interface::NetBuzzertKordophoneServer as DbusServer; + +impl DbusServer for Arc { + fn get_version(&mut self) -> Result { + Ok(self.version.clone()) + } + + fn get_conversations(&mut self) -> Result, dbus::MethodErr> { + todo!() + } +} \ No newline at end of file