dbus-rs 0.0.5

DO NOT USE - renamed to dbus!
docs.rs failed to build dbus-rs-0.0.5
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

A DBus binding for rust.

Current state: WIP, but basic things should be up and working.

Examples

Client

This example opens a connection to the session bus and asks for a list of all names currently present.

let c = Connection::get_private(BusType::Session).unwrap();
let m = Message::new_method_call("org.freedesktop.DBus", "/", "org.freedesktop.DBus", "ListNames").unwrap();
let mut r = c.send_with_reply_and_block(m, 2000).unwrap();
let reply = r.get_items();
println!("{}", reply);

You can try a similar example by running:

cargo run --example client

Server

This example grabs the com.example.test bus name and listens to method calls on the /hello path.

let c = Connection::get_private(BusType::Session).unwrap();
c.register_name("com.example.test", NameFlag::ReplaceExisting as u32).unwrap();
c.register_object_path("/hello").unwrap();
for n in c.iter(1000) {
    match n {
        ConnectionItem::MethodCall(mut m) => /* Handle incoming method call */,
        _ => {},
    }
}

You can try a similar example by running:

cargo run --example server

Properties

This example gets the current version of the Policykit backend.

let c = Connection::get_private(BusType::System).unwrap();
let p = Props::new(&c, "org.freedesktop.PolicyKit1", "/org/freedesktop/PolicyKit1/Authority",
    "org.freedesktop.PolicyKit1.Authority", 10000);
let v = p.get("BackendVersion").unwrap();

You can try a this example by running:

cargo run --example properties

For an extended example, which also uses non-panicing error handling, see

examples/rtkit.rs

License

Apache / MIT dual licensed.