Remove dbus-crossroads
and code using it
That library didn't do it for me. Adding async methods was a pain in the a** with lifetime and type bounds confusing the heck out of me. So I tried it with `dbus::tree` (in the next commits). It still was a bit of work to get it working, but at least it **is** working.
This commit is contained in:
parent
5aaf57c9bb
commit
a4bf221c92
@ -12,6 +12,5 @@ tokio = { version = "0.2", features = ["full"] }
|
|||||||
async-minecraft-ping = "0.2"
|
async-minecraft-ping = "0.2"
|
||||||
dbus = { version = "0.8", features = ["futures"] }
|
dbus = { version = "0.8", features = ["futures"] }
|
||||||
dbus-tokio = "0.5"
|
dbus-tokio = "0.5"
|
||||||
dbus-crossroads = "0.2"
|
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
env_logger = "0.7"
|
env_logger = "0.7"
|
@ -1,5 +1,4 @@
|
|||||||
use log::{ debug, info, warn, error };
|
use log::{ debug, info, warn, error };
|
||||||
use dbus_crossroads::Crossroads;
|
|
||||||
use dbus::{
|
use dbus::{
|
||||||
message::MatchRule,
|
message::MatchRule,
|
||||||
channel::MatchingReceiver
|
channel::MatchingReceiver
|
||||||
@ -18,12 +17,6 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
|
|
||||||
debug!("PID: {}, User: {}", std::process::id(), std::env::var("USER").unwrap_or("N/A".into()));
|
debug!("PID: {}, User: {}", std::process::id(), std::env::var("USER").unwrap_or("N/A".into()));
|
||||||
|
|
||||||
// New Crossroads instance
|
|
||||||
let mut cr = Crossroads::new();
|
|
||||||
|
|
||||||
// Insert object paths
|
|
||||||
cr.insert("/", &[], ());
|
|
||||||
|
|
||||||
// Connect with D-Bus
|
// Connect with D-Bus
|
||||||
let (resource, c) = dbus_tokio::connection::new_system_sync()?;
|
let (resource, c) = dbus_tokio::connection::new_system_sync()?;
|
||||||
debug!("D-Bus unique name: {}", c.unique_name());
|
debug!("D-Bus unique name: {}", c.unique_name());
|
||||||
@ -34,9 +27,6 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
panic!("Lost connection to D-Bus: {}", err);
|
panic!("Lost connection to D-Bus: {}", err);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Allow methods to be async
|
|
||||||
cr.set_async_support(Some((c.clone(), Box::new(|x| { tokio::spawn(x); }))));
|
|
||||||
|
|
||||||
// Aquire name on D-Bus
|
// Aquire name on D-Bus
|
||||||
match c.request_name(DBUS_NAME, false, true, false).await {
|
match c.request_name(DBUS_NAME, false, true, false).await {
|
||||||
Ok(_) => info!("Listening (D-Bus) on {}", DBUS_NAME),
|
Ok(_) => info!("Listening (D-Bus) on {}", DBUS_NAME),
|
||||||
@ -48,8 +38,6 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
|
|
||||||
// Receive method calls
|
// Receive method calls
|
||||||
c.start_receive(MatchRule::new_method_call(), Box::new(move |msg, conn| {
|
c.start_receive(MatchRule::new_method_call(), Box::new(move |msg, conn| {
|
||||||
cr.handle_message(msg, conn).unwrap_or_else(|_| warn!("Incoming message wasn't a method call"));
|
|
||||||
// Return bool whether message should be handled only once (false) or another time (true)
|
|
||||||
true
|
true
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user