Private
Public Access
1
0

daemon: scaffolding for settings / sync

This commit is contained in:
2025-04-25 18:02:54 -07:00
parent 0c6b55fa38
commit fe32efef2c
10 changed files with 204 additions and 45 deletions

View File

@@ -2,10 +2,13 @@ mod dbus;
mod daemon;
use std::future;
use std::sync::{Arc, Mutex};
use log::LevelFilter;
use daemon::Daemon;
use dbus::endpoint::Endpoint as DbusEndpoint;
use dbus::interface;
use dbus::server_impl::ServerImpl;
fn initialize_logging() {
env_logger::Builder::from_default_env()
@@ -19,16 +22,32 @@ async fn main() {
initialize_logging();
// Create the daemon
let daemon = Daemon::new()
.map_err(|e| {
log::error!("Failed to start daemon: {}", e);
std::process::exit(1);
})
.unwrap();
let daemon = Arc::new(
Mutex::new(
Daemon::new()
.map_err(|e| {
log::error!("Failed to start daemon: {}", e);
std::process::exit(1);
})
.unwrap()
)
);
// Create the D-Bus endpoint
let endpoint = DbusEndpoint::new(daemon);
endpoint.start().await;
// Create the server implementation
let server = ServerImpl::new(daemon);
// Register DBus interfaces with endpoint
let endpoint = DbusEndpoint::new(server.clone());
endpoint.register(
interface::NAME,
interface::OBJECT_PATH,
|cr| {
vec![
interface::register_net_buzzert_kordophone_repository(cr),
interface::register_net_buzzert_kordophone_settings(cr)
]
}
).await;
future::pending::<()>().await;
unreachable!()