Initial commit
[mail-dbus.git] / src / main.rs
1 use dbus::blocking::Connection;
2 use dbus_crossroads::{Context, Crossroads};
3 use std::error::Error;
4
5 fn main() -> Result<(), Box<dyn Error>> {
6 let service_name: &'static str = "com.jacobcasper.Mail";
7 let conn = Connection::new_session()?;
8 conn.request_name(service_name, false, true, false)?;
9
10 let mut crossroads = Crossroads::new();
11
12 let interface_token = crossroads.register(service_name, |builder| {
13 builder.signal::<(u32,), _>("UnreadCount", ("count",));
14 builder.method(
15 "UnreadCount",
16 ("count",),
17 (),
18 |ctx: &mut Context, _, (count,): (u32,)| {
19 ctx.push_msg(ctx.make_signal("UnreadCount", (count,)));
20 Ok(())
21 },
22 );
23 });
24
25 crossroads.insert("/com/jacobcasper/Mail/Unread", &[interface_token], ());
26 crossroads.serve(&conn)?;
27 unreachable!()
28 }