From d35f0c9ee105f8c789827d6f5c740154f7b9b1bc Mon Sep 17 00:00:00 2001 From: Minijackson Date: Mon, 8 Oct 2018 15:41:46 +0200 Subject: Use features to separate pa_eq and pa_effects + slightly better logging --- src/pa_eq/dbus_api/equalizing_manager.rs | 291 +++++++++++++++++++++++++++++++ 1 file changed, 291 insertions(+) create mode 100644 src/pa_eq/dbus_api/equalizing_manager.rs (limited to 'src/pa_eq/dbus_api/equalizing_manager.rs') diff --git a/src/pa_eq/dbus_api/equalizing_manager.rs b/src/pa_eq/dbus_api/equalizing_manager.rs new file mode 100644 index 0000000..5f6574f --- /dev/null +++ b/src/pa_eq/dbus_api/equalizing_manager.rs @@ -0,0 +1,291 @@ +// 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 OrgPulseAudioExtEqualizing1Manager { + type Err; + fn remove_profile(&self, name: &str) -> Result<(), Self::Err>; + fn get_interface_revision(&self) -> Result; + fn get_equalized_sinks(&self) -> Result>, Self::Err>; + fn get_profiles(&self) -> Result, Self::Err>; +} + +impl<'a, C: ::std::ops::Deref> OrgPulseAudioExtEqualizing1Manager for dbus::ConnPath<'a, C> { + type Err = dbus::Error; + + fn remove_profile(&self, name: &str) -> Result<(), Self::Err> { + let mut m = try!(self.method_call_with_args(&"org.PulseAudio.Ext.Equalizing1.Manager".into(), &"RemoveProfile".into(), |msg| { + let mut i = arg::IterAppend::new(msg); + i.append(name); + })); + try!(m.as_result()); + Ok(()) + } + + fn get_interface_revision(&self) -> Result { + ::get(&self, "org.PulseAudio.Ext.Equalizing1.Manager", "InterfaceRevision") + } + + fn get_equalized_sinks(&self) -> Result>, Self::Err> { + ::get(&self, "org.PulseAudio.Ext.Equalizing1.Manager", "EqualizedSinks") + } + + fn get_profiles(&self) -> Result, Self::Err> { + ::get(&self, "org.PulseAudio.Ext.Equalizing1.Manager", "Profiles") + } +} + +pub fn org_pulse_audio_ext_equalizing1_manager_server(factory: &tree::Factory, D>, data: D::Interface, f: F) -> tree::Interface, D> +where + D: tree::DataType, + D::Method: Default, + D::Property: Default, + T: OrgPulseAudioExtEqualizing1Manager, + F: 'static + for <'z> Fn(& 'z tree::MethodInfo, D>) -> & 'z T, +{ + let i = factory.interface("org.PulseAudio.Ext.Equalizing1.Manager", 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 name: &str = try!(i.read()); + let d = fclone(minfo); + try!(d.remove_profile(name)); + let rm = minfo.msg.method_return(); + Ok(vec!(rm)) + }; + let m = factory.method("RemoveProfile", Default::default(), h); + let m = m.in_arg(("name", "s")); + let i = i.add_m(m); + + let p = factory.property::("InterfaceRevision", 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_interface_revision())); + Ok(()) + }); + let i = i.add_p(p); + + let p = factory.property::, _>("EqualizedSinks", 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_equalized_sinks())); + Ok(()) + }); + let i = i.add_p(p); + + let p = factory.property::, _>("Profiles", 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_profiles())); + Ok(()) + }); + let i = i.add_p(p); + i +} + +#[derive(Debug, Default)] +pub struct OrgPulseAudioExtEqualizing1ManagerSinkAdded { + pub sink: dbus::Path<'static>, +} + +impl dbus::SignalArgs for OrgPulseAudioExtEqualizing1ManagerSinkAdded { + const NAME: &'static str = "SinkAdded"; + const INTERFACE: &'static str = "org.PulseAudio.Ext.Equalizing1.Manager"; + fn append(&self, i: &mut arg::IterAppend) { + (&self.sink as &arg::RefArg).append(i); + } + fn get(&mut self, i: &mut arg::Iter) -> Result<(), arg::TypeMismatchError> { + self.sink = try!(i.read()); + Ok(()) + } +} + +#[derive(Debug, Default)] +pub struct OrgPulseAudioExtEqualizing1ManagerSinkRemoved { + pub sink: dbus::Path<'static>, +} + +impl dbus::SignalArgs for OrgPulseAudioExtEqualizing1ManagerSinkRemoved { + const NAME: &'static str = "SinkRemoved"; + const INTERFACE: &'static str = "org.PulseAudio.Ext.Equalizing1.Manager"; + fn append(&self, i: &mut arg::IterAppend) { + (&self.sink as &arg::RefArg).append(i); + } + fn get(&mut self, i: &mut arg::Iter) -> Result<(), arg::TypeMismatchError> { + self.sink = try!(i.read()); + Ok(()) + } +} + +#[derive(Debug, Default)] +pub struct OrgPulseAudioExtEqualizing1ManagerProfilesChanged { +} + +impl dbus::SignalArgs for OrgPulseAudioExtEqualizing1ManagerProfilesChanged { + const NAME: &'static str = "ProfilesChanged"; + const INTERFACE: &'static str = "org.PulseAudio.Ext.Equalizing1.Manager"; + fn append(&self, _: &mut arg::IterAppend) { + } + fn get(&mut self, _: &mut arg::Iter) -> Result<(), arg::TypeMismatchError> { + Ok(()) + } +} + +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