From d575adf63b7e87196b636ee91061692a685b605f Mon Sep 17 00:00:00 2001 From: Minijackson Date: Sun, 2 Sep 2018 16:04:22 +0200 Subject: First working version --- src/dbus_api/server_lookup.rs | 188 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 src/dbus_api/server_lookup.rs (limited to 'src/dbus_api/server_lookup.rs') diff --git a/src/dbus_api/server_lookup.rs b/src/dbus_api/server_lookup.rs new file mode 100644 index 0000000..78ad4bd --- /dev/null +++ b/src/dbus_api/server_lookup.rs @@ -0,0 +1,188 @@ +// This code was autogenerated with dbus-codegen-rust, see https://github.com/diwic/dbus-rs + +#![allow(dead_code)] +use dbus as dbus; +use dbus::arg; +use dbus::tree; + +pub trait OrgPulseAudioServerLookup1 { + type Err; + fn get_address(&self) -> Result; +} + +impl<'a, C: ::std::ops::Deref> OrgPulseAudioServerLookup1 for dbus::ConnPath<'a, C> { + type Err = dbus::Error; + + fn get_address(&self) -> Result { + ::get(&self, "org.PulseAudio.ServerLookup1", "Address") + } +} + +pub fn org_pulse_audio_server_lookup1_server(factory: &tree::Factory, D>, data: D::Interface, f: F) -> tree::Interface, D> +where + D: tree::DataType, + D::Method: Default, + D::Property: Default, + T: OrgPulseAudioServerLookup1, + F: 'static + for <'z> Fn(& 'z tree::MethodInfo, D>) -> & 'z T, +{ + let i = factory.interface("org.PulseAudio.ServerLookup1", data); + let f = ::std::sync::Arc::new(f); + let p = factory.property::<&str, _>("Address", 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(try!(d.get_address())); + Ok(()) + }); + let i = i.add_p(p); + i +} + +pub trait OrgFreedesktopDBusIntrospectable { + type Err; + fn introspect(&self) -> Result; +} + +impl<'a, C: ::std::ops::Deref> OrgFreedesktopDBusIntrospectable for dbus::ConnPath<'a, C> { + type Err = dbus::Error; + + fn introspect(&self) -> Result { + let mut m = try!(self.method_call_with_args(&"org.freedesktop.DBus.Introspectable".into(), &"Introspect".into(), |_| { + })); + try!(m.as_result()); + let mut i = m.iter_init(); + let data: String = try!(i.read()); + Ok(data) + } +} + +pub fn org_freedesktop_dbus_introspectable_server(factory: &tree::Factory, D>, data: D::Interface, f: F) -> tree::Interface, D> +where + D: tree::DataType, + D::Method: Default, + T: OrgFreedesktopDBusIntrospectable, + F: 'static + for <'z> Fn(& 'z tree::MethodInfo, D>) -> & 'z T, +{ + let i = factory.interface("org.freedesktop.DBus.Introspectable", data); + let f = ::std::sync::Arc::new(f); + let fclone = f.clone(); + let h = move |minfo: &tree::MethodInfo, D>| { + let d = fclone(minfo); + let data = try!(d.introspect()); + let rm = minfo.msg.method_return(); + let rm = rm.append1(data); + Ok(vec!(rm)) + }; + let m = factory.method("Introspect", Default::default(), h); + let m = m.out_arg(("data", "s")); + let i = i.add_m(m); + i +} + +pub trait OrgFreedesktopDBusProperties { + type Err; + fn get(&self, interface_name: &str, property_name: &str) -> Result>, Self::Err>; + fn set(&self, interface_name: &str, property_name: &str, value: arg::Variant>) -> Result<(), Self::Err>; + fn get_all(&self, interface_name: &str) -> Result<::std::collections::HashMap>>, Self::Err>; +} + +impl<'a, C: ::std::ops::Deref> OrgFreedesktopDBusProperties for dbus::ConnPath<'a, C> { + type Err = dbus::Error; + + fn get(&self, interface_name: &str, property_name: &str) -> Result>, Self::Err> { + let mut m = try!(self.method_call_with_args(&"org.freedesktop.DBus.Properties".into(), &"Get".into(), |msg| { + let mut i = arg::IterAppend::new(msg); + i.append(interface_name); + i.append(property_name); + })); + try!(m.as_result()); + let mut i = m.iter_init(); + let value: arg::Variant> = try!(i.read()); + Ok(value) + } + + fn set(&self, interface_name: &str, property_name: &str, value: arg::Variant>) -> Result<(), Self::Err> { + let mut m = try!(self.method_call_with_args(&"org.freedesktop.DBus.Properties".into(), &"Set".into(), |msg| { + let mut i = arg::IterAppend::new(msg); + i.append(interface_name); + i.append(property_name); + i.append(value); + })); + try!(m.as_result()); + Ok(()) + } + + fn get_all(&self, interface_name: &str) -> Result<::std::collections::HashMap>>, Self::Err> { + let mut m = try!(self.method_call_with_args(&"org.freedesktop.DBus.Properties".into(), &"GetAll".into(), |msg| { + let mut i = arg::IterAppend::new(msg); + i.append(interface_name); + })); + try!(m.as_result()); + let mut i = m.iter_init(); + let props: ::std::collections::HashMap>> = try!(i.read()); + Ok(props) + } +} + +pub fn org_freedesktop_dbus_properties_server(factory: &tree::Factory, D>, data: D::Interface, f: F) -> tree::Interface, D> +where + D: tree::DataType, + D::Method: Default, + T: OrgFreedesktopDBusProperties, + F: 'static + for <'z> Fn(& 'z tree::MethodInfo, D>) -> & 'z T, +{ + let i = factory.interface("org.freedesktop.DBus.Properties", 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 interface_name: &str = try!(i.read()); + let property_name: &str = try!(i.read()); + let d = fclone(minfo); + let value = try!(d.get(interface_name, property_name)); + let rm = minfo.msg.method_return(); + let rm = rm.append1(value); + Ok(vec!(rm)) + }; + let m = factory.method("Get", Default::default(), h); + let m = m.in_arg(("interface_name", "s")); + let m = m.in_arg(("property_name", "s")); + let m = m.out_arg(("value", "v")); + 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 interface_name: &str = try!(i.read()); + let property_name: &str = try!(i.read()); + let value: arg::Variant> = try!(i.read()); + let d = fclone(minfo); + try!(d.set(interface_name, property_name, value)); + let rm = minfo.msg.method_return(); + Ok(vec!(rm)) + }; + let m = factory.method("Set", Default::default(), h); + let m = m.in_arg(("interface_name", "s")); + let m = m.in_arg(("property_name", "s")); + let m = m.in_arg(("value", "v")); + 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 interface_name: &str = try!(i.read()); + let d = fclone(minfo); + let props = try!(d.get_all(interface_name)); + let rm = minfo.msg.method_return(); + let rm = rm.append1(props); + Ok(vec!(rm)) + }; + let m = factory.method("GetAll", Default::default(), h); + let m = m.in_arg(("interface_name", "s")); + let m = m.out_arg(("props", "a{sv}")); + let i = i.add_m(m); + i +} -- cgit v1.2.3