1 extern crate dbus;
2 
3 use dbus::{Connection, BusType, NameFlag};
4 use dbus::tree::Factory;
5 
6 fn main() {
7     let c = Connection::get_private(BusType::Session).unwrap();
8     c.register_name("com.example.dbustest", NameFlag::ReplaceExisting as u32).unwrap();
9 
10     let f = Factory::new_fn();
11     let tree = f.tree().add(f.object_path("/hello").introspectable().add(
12         f.interface("com.example.dbustest").add_m(
13             f.method("Hello", |m,_,_| {
14                 let s = format!("Hello {}!", m.sender().unwrap());
15                 Ok(vec!(m.method_return().append(s)))
16             }).out_arg(("reply", "s")) // One output argument, no input arguments
17         )
18     ));
19 
20     tree.set_registered(&c, true).unwrap();
21     for _ in tree.run(&c, c.iter(1000)) {}
22 }
23