// This code was autogenerated with `dbus-codegen-rust --file telepathy-spec/spec/Channel_Request.xml -i org.freedesktop.Telepathy -o src/telepathy/channel_request.rs`, see https://github.com/diwic/dbus-rs use dbus; use dbus::arg; use dbus::tree; pub trait ChannelRequest { fn proceed(&self) -> Result<(), tree::MethodErr>; fn cancel(&self) -> Result<(), tree::MethodErr>; fn account(&self) -> Result, tree::MethodErr>; fn user_action_time(&self) -> Result; fn preferred_handler(&self) -> Result; fn requests( &self, ) -> Result< Vec<::std::collections::HashMap>>>, tree::MethodErr, >; fn interfaces(&self) -> Result, tree::MethodErr>; fn hints( &self, ) -> Result< ::std::collections::HashMap>>, tree::MethodErr, >; } pub fn channel_request_server( factory: &tree::Factory, D>, data: D::Interface, f: F, ) -> tree::Interface, D> where D: tree::DataType, D::Method: Default, D::Property: Default, D::Signal: Default, T: ChannelRequest, F: 'static + for<'z> Fn(&'z tree::MethodInfo, D>) -> &'z T, { let i = factory.interface("org.freedesktop.Telepathy.ChannelRequest", data); let f = ::std::sync::Arc::new(f); let fclone = f.clone(); let h = move |minfo: &tree::MethodInfo, D>| { let d = fclone(minfo); d.proceed()?; let rm = minfo.msg.method_return(); Ok(vec![rm]) }; let m = factory.method("Proceed", Default::default(), h); let i = i.add_m(m); let fclone = f.clone(); let h = move |minfo: &tree::MethodInfo, D>| { let d = fclone(minfo); d.cancel()?; let rm = minfo.msg.method_return(); Ok(vec![rm]) }; let m = factory.method("Cancel", Default::default(), h); let i = i.add_m(m); let p = factory.property::("Account", Default::default()); let p = p.access(tree::Access::Read); let fclone = f.clone(); let p = p.on_get(move |a, pinfo| { let minfo = pinfo.to_method_info(); let d = fclone(&minfo); a.append(d.account()?); Ok(()) }); let i = i.add_p(p); let p = factory.property::("UserActionTime", Default::default()); let p = p.access(tree::Access::Read); let fclone = f.clone(); let p = p.on_get(move |a, pinfo| { let minfo = pinfo.to_method_info(); let d = fclone(&minfo); a.append(d.user_action_time()?); Ok(()) }); let i = i.add_p(p); let p = factory.property::<&str, _>("PreferredHandler", Default::default()); let p = p.access(tree::Access::Read); let fclone = f.clone(); let p = p.on_get(move |a, pinfo| { let minfo = pinfo.to_method_info(); let d = fclone(&minfo); a.append(d.preferred_handler()?); Ok(()) }); let i = i.add_p(p); let p = factory .property::>>>, _>( "Requests", Default::default(), ); let p = p.access(tree::Access::Read); let fclone = f.clone(); let p = p.on_get(move |a, pinfo| { let minfo = pinfo.to_method_info(); let d = fclone(&minfo); a.append(d.requests()?); Ok(()) }); let i = i.add_p(p); let p = factory.property::, _>("Interfaces", Default::default()); let p = p.access(tree::Access::Read); let fclone = f.clone(); let p = p.on_get(move |a, pinfo| { let minfo = pinfo.to_method_info(); let d = fclone(&minfo); a.append(d.interfaces()?); Ok(()) }); let i = i.add_p(p); let p = factory .property::<::std::collections::HashMap<&str, arg::Variant>>, _>( "Hints", Default::default(), ); let p = p.access(tree::Access::Read); let fclone = f.clone(); let p = p.on_get(move |a, pinfo| { let minfo = pinfo.to_method_info(); let d = fclone(&minfo); a.append(d.hints()?); Ok(()) }); let i = i.add_p(p); let s = factory.signal("Failed", Default::default()); let s = s.arg(("Error", "s")); let s = s.arg(("Message", "s")); let i = i.add_s(s); let s = factory.signal("Succeeded", Default::default()); let i = i.add_s(s); let s = factory.signal("SucceededWithChannel", Default::default()); let s = s.arg(("Connection", "o")); let s = s.arg(("Connection_Properties", "a{sv}")); let s = s.arg(("Channel", "o")); let s = s.arg(("Channel_Properties", "a{sv}")); let i = i.add_s(s); i } #[derive(Debug)] pub struct ChannelRequestFailed { pub error: String, pub message: String, } impl arg::AppendAll for ChannelRequestFailed { fn append(&self, i: &mut arg::IterAppend) { arg::RefArg::append(&self.error, i); arg::RefArg::append(&self.message, i); } } impl arg::ReadAll for ChannelRequestFailed { fn read(i: &mut arg::Iter) -> Result { Ok(ChannelRequestFailed { error: i.read()?, message: i.read()?, }) } } impl dbus::message::SignalArgs for ChannelRequestFailed { const NAME: &'static str = "Failed"; const INTERFACE: &'static str = "org.freedesktop.Telepathy.ChannelRequest"; } #[derive(Debug)] pub struct ChannelRequestSucceeded {} impl arg::AppendAll for ChannelRequestSucceeded { fn append(&self, _: &mut arg::IterAppend) {} } impl arg::ReadAll for ChannelRequestSucceeded { fn read(_: &mut arg::Iter) -> Result { Ok(ChannelRequestSucceeded {}) } } impl dbus::message::SignalArgs for ChannelRequestSucceeded { const NAME: &'static str = "Succeeded"; const INTERFACE: &'static str = "org.freedesktop.Telepathy.ChannelRequest"; } #[derive(Debug)] pub struct ChannelRequestSucceededWithChannel { pub connection: dbus::Path<'static>, pub connection_properties: ::std::collections::HashMap>>, pub channel: dbus::Path<'static>, pub channel_properties: ::std::collections::HashMap>>, } impl arg::AppendAll for ChannelRequestSucceededWithChannel { fn append(&self, i: &mut arg::IterAppend) { arg::RefArg::append(&self.connection, i); arg::RefArg::append(&self.connection_properties, i); arg::RefArg::append(&self.channel, i); arg::RefArg::append(&self.channel_properties, i); } } impl arg::ReadAll for ChannelRequestSucceededWithChannel { fn read(i: &mut arg::Iter) -> Result { Ok(ChannelRequestSucceededWithChannel { connection: i.read()?, connection_properties: i.read()?, channel: i.read()?, channel_properties: i.read()?, }) } } impl dbus::message::SignalArgs for ChannelRequestSucceededWithChannel { const NAME: &'static str = "SucceededWithChannel"; const INTERFACE: &'static str = "org.freedesktop.Telepathy.ChannelRequest"; }