#![allow(clippy::all)] // This code was autogenerated with `dbus-codegen-rust --file telepathy-spec/spec/Channel_Dispatcher.xml -i org.freedesktop.Telepathy -a AsRefClosure -o src/telepathy/channel_dispatcher.rs`, see https://github.com/diwic/dbus-rs use dbus; use dbus::arg; use dbus::tree; pub trait ChannelDispatcher { fn create_channel( &self, account: dbus::Path, requested_properties: ::std::collections::HashMap<&str, arg::Variant>>, user_action_time: i64, preferred_handler: &str, ) -> Result, tree::MethodErr>; fn ensure_channel( &self, account: dbus::Path, requested_properties: ::std::collections::HashMap<&str, arg::Variant>>, user_action_time: i64, preferred_handler: &str, ) -> Result, tree::MethodErr>; fn create_channel_with_hints( &self, account: dbus::Path, requested_properties: ::std::collections::HashMap<&str, arg::Variant>>, user_action_time: i64, preferred_handler: &str, hints: ::std::collections::HashMap<&str, arg::Variant>>, ) -> Result, tree::MethodErr>; fn ensure_channel_with_hints( &self, account: dbus::Path, requested_properties: ::std::collections::HashMap<&str, arg::Variant>>, user_action_time: i64, preferred_handler: &str, hints: ::std::collections::HashMap<&str, arg::Variant>>, ) -> Result, tree::MethodErr>; fn delegate_channels( &self, channels: Vec, user_action_time: i64, preferred_handler: &str, ) -> Result< ( Vec>, ::std::collections::HashMap, (String, String)>, ), tree::MethodErr, >; fn present_channel( &self, channel: dbus::Path, user_action_time: i64, ) -> Result<(), tree::MethodErr>; fn interfaces(&self) -> Result, tree::MethodErr>; fn supports_request_hints(&self) -> Result; } pub fn channel_dispatcher_server( factory: &tree::Factory, D>, data: D::Interface, f: F, ) -> tree::Interface, D> where D: tree::DataType, D::Method: Default, D::Property: Default, T: AsRef, F: 'static + Fn(&tree::MethodInfo, D>) -> T, { let i = factory.interface("org.freedesktop.Telepathy.ChannelDispatcher", data); let f = ::std::sync::Arc::new(f); let fclone = f.clone(); let h = move |minfo: &tree::MethodInfo, D>| { let mut i = minfo.msg.iter_init(); let account: dbus::Path = i.read()?; let requested_properties: ::std::collections::HashMap< &str, arg::Variant>, > = i.read()?; let user_action_time: i64 = i.read()?; let preferred_handler: &str = i.read()?; let dd = fclone(minfo); let d = dd.as_ref(); let request = d.create_channel( account, requested_properties, user_action_time, preferred_handler, )?; let rm = minfo.msg.method_return(); let rm = rm.append1(request); Ok(vec![rm]) }; let m = factory.method("CreateChannel", Default::default(), h); let m = m.in_arg(("Account", "o")); let m = m.in_arg(("Requested_Properties", "a{sv}")); let m = m.in_arg(("User_Action_Time", "x")); let m = m.in_arg(("Preferred_Handler", "s")); let m = m.out_arg(("Request", "o")); let i = i.add_m(m); let fclone = f.clone(); let h = move |minfo: &tree::MethodInfo, D>| { let mut i = minfo.msg.iter_init(); let account: dbus::Path = i.read()?; let requested_properties: ::std::collections::HashMap< &str, arg::Variant>, > = i.read()?; let user_action_time: i64 = i.read()?; let preferred_handler: &str = i.read()?; let dd = fclone(minfo); let d = dd.as_ref(); let request = d.ensure_channel( account, requested_properties, user_action_time, preferred_handler, )?; let rm = minfo.msg.method_return(); let rm = rm.append1(request); Ok(vec![rm]) }; let m = factory.method("EnsureChannel", Default::default(), h); let m = m.in_arg(("Account", "o")); let m = m.in_arg(("Requested_Properties", "a{sv}")); let m = m.in_arg(("User_Action_Time", "x")); let m = m.in_arg(("Preferred_Handler", "s")); let m = m.out_arg(("Request", "o")); let i = i.add_m(m); let fclone = f.clone(); let h = move |minfo: &tree::MethodInfo, D>| { let mut i = minfo.msg.iter_init(); let account: dbus::Path = i.read()?; let requested_properties: ::std::collections::HashMap< &str, arg::Variant>, > = i.read()?; let user_action_time: i64 = i.read()?; let preferred_handler: &str = i.read()?; let hints: ::std::collections::HashMap<&str, arg::Variant>> = i.read()?; let dd = fclone(minfo); let d = dd.as_ref(); let request = d.create_channel_with_hints( account, requested_properties, user_action_time, preferred_handler, hints, )?; let rm = minfo.msg.method_return(); let rm = rm.append1(request); Ok(vec![rm]) }; let m = factory.method("CreateChannelWithHints", Default::default(), h); let m = m.in_arg(("Account", "o")); let m = m.in_arg(("Requested_Properties", "a{sv}")); let m = m.in_arg(("User_Action_Time", "x")); let m = m.in_arg(("Preferred_Handler", "s")); let m = m.in_arg(("Hints", "a{sv}")); let m = m.out_arg(("Request", "o")); let i = i.add_m(m); let fclone = f.clone(); let h = move |minfo: &tree::MethodInfo, D>| { let mut i = minfo.msg.iter_init(); let account: dbus::Path = i.read()?; let requested_properties: ::std::collections::HashMap< &str, arg::Variant>, > = i.read()?; let user_action_time: i64 = i.read()?; let preferred_handler: &str = i.read()?; let hints: ::std::collections::HashMap<&str, arg::Variant>> = i.read()?; let dd = fclone(minfo); let d = dd.as_ref(); let request = d.ensure_channel_with_hints( account, requested_properties, user_action_time, preferred_handler, hints, )?; let rm = minfo.msg.method_return(); let rm = rm.append1(request); Ok(vec![rm]) }; let m = factory.method("EnsureChannelWithHints", Default::default(), h); let m = m.in_arg(("Account", "o")); let m = m.in_arg(("Requested_Properties", "a{sv}")); let m = m.in_arg(("User_Action_Time", "x")); let m = m.in_arg(("Preferred_Handler", "s")); let m = m.in_arg(("Hints", "a{sv}")); let m = m.out_arg(("Request", "o")); let i = i.add_m(m); let fclone = f.clone(); let h = move |minfo: &tree::MethodInfo, D>| { let mut i = minfo.msg.iter_init(); let channels: Vec = i.read()?; let user_action_time: i64 = i.read()?; let preferred_handler: &str = i.read()?; let dd = fclone(minfo); let d = dd.as_ref(); let (delegated, not_delegated) = d.delegate_channels(channels, user_action_time, preferred_handler)?; let rm = minfo.msg.method_return(); let rm = rm.append1(delegated); let rm = rm.append1(not_delegated); Ok(vec![rm]) }; let m = factory.method("DelegateChannels", Default::default(), h); let m = m.in_arg(("Channels", "ao")); let m = m.in_arg(("User_Action_Time", "x")); let m = m.in_arg(("Preferred_Handler", "s")); let m = m.out_arg(("Delegated", "ao")); let m = m.out_arg(("Not_Delegated", "a{o(ss)}")); let i = i.add_m(m); let fclone = f.clone(); let h = move |minfo: &tree::MethodInfo, D>| { let mut i = minfo.msg.iter_init(); let channel: dbus::Path = i.read()?; let user_action_time: i64 = i.read()?; let dd = fclone(minfo); let d = dd.as_ref(); d.present_channel(channel, user_action_time)?; let rm = minfo.msg.method_return(); Ok(vec![rm]) }; let m = factory.method("PresentChannel", Default::default(), h); let m = m.in_arg(("Channel", "o")); let m = m.in_arg(("User_Action_Time", "x")); let i = i.add_m(m); 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 dd = fclone(&minfo); let d = dd.as_ref(); a.append(d.interfaces()?); Ok(()) }); let i = i.add_p(p); let p = factory.property::("SupportsRequestHints", 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 dd = fclone(&minfo); let d = dd.as_ref(); a.append(d.supports_request_hints()?); Ok(()) }); let i = i.add_p(p); i }