Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f455e151 authored by Sonny Sasaka's avatar Sonny Sasaka
Browse files

floss: Change signature of DBusArg::from_dbus

Connection, object path, and disconnect watcher are not always required
for conversion, so this makes those parameters optional.

Bug: 193685325
Tag: #floss
Test: Build floss on Linux and AOSP

Change-Id: I28120e4c8d9fccb5458f336c818c095b4d87580f
parent eb67b3ea
Loading
Loading
Loading
Loading
+1 −7
Original line number Diff line number Diff line
@@ -252,13 +252,7 @@ impl IBluetoothManager for BluetoothManagerDBus {

    fn get_available_adapters(&mut self) -> Vec<AdapterWithEnabled> {
        let props: Vec<dbus::arg::PropMap> = self.client_proxy.method("GetAvailableAdapters", ());
        <Vec<AdapterWithEnabled> as DBusArg>::from_dbus(
            props,
            self.client_proxy.conn.clone(),
            dbus::strings::BusName::new(":1.0").unwrap(), // unused
            Arc::new(Mutex::new(DisconnectWatcher::new())),
        )
        .unwrap()
        <Vec<AdapterWithEnabled> as DBusArg>::from_dbus(props, None, None, None).unwrap()
    }
}

+21 −21
Original line number Diff line number Diff line
@@ -117,9 +117,9 @@ pub fn generate_dbus_exporter(attr: TokenStream, item: TokenStream) -> TokenStre
                            #make_args
                            let #ident = <#arg_type as DBusArg>::from_dbus(
                                #dbus_input_arg,
                                conn_clone.clone(),
                                ctx.message().sender().unwrap().into_static(),
                                dc_watcher_clone.clone(),
                                Some(conn_clone.clone()),
                                Some(ctx.message().sender().unwrap().into_static()),
                                Some(dc_watcher_clone.clone()),
                            );

                            if let Result::Err(e) = #ident {
@@ -306,9 +306,9 @@ pub fn dbus_propmap(attr: TokenStream, item: TokenStream) -> TokenStream {

            fn from_dbus(
                data__: dbus::arg::PropMap,
                conn__: std::sync::Arc<SyncConnection>,
                remote__: dbus::strings::BusName<'static>,
                disconnect_watcher__: std::sync::Arc<std::sync::Mutex<dbus_projection::DisconnectWatcher>>,
                conn__: Option<std::sync::Arc<SyncConnection>>,
                remote__: Option<dbus::strings::BusName<'static>>,
                disconnect_watcher__: Option<std::sync::Arc<std::sync::Mutex<dbus_projection::DisconnectWatcher>>>,
            ) -> Result<#struct_ident, Box<dyn std::error::Error>> {
                #make_fields

@@ -457,15 +457,15 @@ pub fn dbus_proxy_obj(attr: TokenStream, item: TokenStream) -> TokenStream {

            fn from_dbus(
                objpath__: Path<'static>,
                conn__: std::sync::Arc<SyncConnection>,
                remote__: dbus::strings::BusName<'static>,
                disconnect_watcher__: std::sync::Arc<std::sync::Mutex<DisconnectWatcher>>,
                conn__: Option<std::sync::Arc<SyncConnection>>,
                remote__: Option<dbus::strings::BusName<'static>>,
                disconnect_watcher__: Option<std::sync::Arc<std::sync::Mutex<DisconnectWatcher>>>,
            ) -> Result<Box<dyn #trait_ + Send>, Box<dyn std::error::Error>> {
                Ok(Box::new(#struct_ident {
                    conn: conn__,
                    remote: remote__,
                    conn: conn__.unwrap(),
                    remote: remote__.unwrap(),
                    objpath: objpath__,
                    disconnect_watcher: disconnect_watcher__,
                    disconnect_watcher: disconnect_watcher__.unwrap(),
                }))
            }

@@ -594,9 +594,9 @@ pub fn generate_dbus_arg(_item: TokenStream) -> TokenStream {

            fn from_dbus(
                x: Self::DBusType,
                conn: Arc<SyncConnection>,
                remote: BusName<'static>,
                disconnect_watcher: Arc<Mutex<DisconnectWatcher>>,
                conn: Option<Arc<SyncConnection>>,
                remote: Option<BusName<'static>>,
                disconnect_watcher: Option<Arc<Mutex<DisconnectWatcher>>>,
            ) -> Result<Self, Box<dyn Error>>
            where
                Self: Sized;
@@ -619,9 +619,9 @@ pub fn generate_dbus_arg(_item: TokenStream) -> TokenStream {

            fn from_dbus(
                data: T,
                _conn: Arc<SyncConnection>,
                _remote: BusName<'static>,
                _disconnect_watcher: Arc<Mutex<DisconnectWatcher>>,
                _conn: Option<Arc<SyncConnection>>,
                _remote: Option<BusName<'static>>,
                _disconnect_watcher: Option<Arc<Mutex<DisconnectWatcher>>>,
            ) -> Result<T, Box<dyn Error>> {
                return Ok(data);
            }
@@ -636,9 +636,9 @@ pub fn generate_dbus_arg(_item: TokenStream) -> TokenStream {

            fn from_dbus(
                data: Vec<T::DBusType>,
                conn: Arc<SyncConnection>,
                remote: BusName<'static>,
                disconnect_watcher: Arc<Mutex<DisconnectWatcher>>,
                conn: Option<Arc<SyncConnection>>,
                remote: Option<BusName<'static>>,
                disconnect_watcher: Option<Arc<Mutex<DisconnectWatcher>>>,
            ) -> Result<Vec<T>, Box<dyn Error>> {
                let mut list: Vec<T> = vec![];
                for prop in data {
+5 −3
Original line number Diff line number Diff line
@@ -80,9 +80,11 @@ macro_rules! impl_dbus_arg_enum {
            type DBusType = i32;
            fn from_dbus(
                data: i32,
                _conn: Arc<SyncConnection>,
                _remote: dbus::strings::BusName<'static>,
                _disconnect_watcher: Arc<std::sync::Mutex<dbus_projection::DisconnectWatcher>>,
                _conn: Option<Arc<SyncConnection>>,
                _remote: Option<dbus::strings::BusName<'static>>,
                _disconnect_watcher: Option<
                    Arc<std::sync::Mutex<dbus_projection::DisconnectWatcher>>,
                >,
            ) -> Result<$enum_type, Box<dyn std::error::Error>> {
                match <$enum_type>::from_i32(data) {
                    Some(x) => Ok(x),