示例#1
0
文件: Base.py 项目: cschramm/blueman
 def callback(proxy, result, reply, error):
     try:
         value = proxy.call_finish(result).unpack()
         if reply: reply(*value)
         else: return value
     except GLib.Error as e:
         if error: error(parse_dbus_error(e))
         else: raise parse_dbus_error(e)
示例#2
0
 def callback(proxy, result, reply, error):
     try:
         value = proxy.call_finish(result).unpack()
         if reply: reply(*value)
         else: return value
     except GLib.Error as e:
         if error: error(parse_dbus_error(e))
         else: raise parse_dbus_error(e)
示例#3
0
文件: Base.py 项目: j-piecuch/blueman
 def callback(
     proxy: Base,
     result: Gio.Task,
     reply: Optional[Callable[..., None]],
     error: Optional[Callable[[BluezDBusException], None]],
 ) -> None:
     try:
         value = proxy.call_finish(result).unpack()
         if reply:
             reply(*value)
     except GLib.Error as e:
         if error:
             error(parse_dbus_error(e))
         else:
             raise parse_dbus_error(e)
示例#4
0
 def get(self, name):
     try:
         prop = self.call_sync(
             'org.freedesktop.DBus.Properties.Get',
             GLib.Variant('(ss)', (self._interface_name, name)),
             Gio.DBusCallFlags.NONE, GLib.MAXINT, None)
         return prop.unpack()[0]
     except GLib.Error as e:
         if name in self.__fallback:
             return self.__fallback[name]
         else:
             raise parse_dbus_error(e)
示例#5
0
文件: Base.py 项目: cschramm/blueman
 def get(self, name):
     try:
         prop = self.call_sync(
             'org.freedesktop.DBus.Properties.Get',
             GLib.Variant('(ss)', (self._interface_name, name)),
             Gio.DBusCallFlags.NONE,
             GLib.MAXINT,
             None)
         return prop.unpack()[0]
     except GLib.Error as e:
         if name in self.__fallback:
             return self.__fallback[name]
         else:
             raise parse_dbus_error(e)
示例#6
0
    def _call(self, method, param=None, properties=False, *args, **kwargs):
        def callback(proxy, result, reply_handler, error_handler):
            try:
                result = proxy.call_finish(result).unpack()
                reply_handler(*result)
            except GLib.Error as e:
                error_handler(parse_dbus_error(e))

        def ok(*args, **kwargs):
            if callable(reply_handler):
                reply_handler(*args, **kwargs)

        def err(e):
            if callable(error_handler):
                error_handler(e)
            else:
                raise exception

        if properties: dbus_proxy = self.__dbus_properties_proxy
        else: dbus_proxy = self.__dbus_proxy

        if 'reply_handler' in kwargs:
            reply_handler = kwargs.pop('reply_handler')
        else:
            reply_handler = None

        if 'error_handler' in kwargs:
            error_handler = kwargs.pop('error_handler')
        else:
            error_handler = None

        if reply_handler or error_handler:
            # Make sure we have an error handler if we do async calls
            assert (error_handler != None)

            dbus_proxy.call(method, param, Gio.DBusCallFlags.NONE, GLib.MAXINT,
                            None, callback, ok, err)
        else:
            try:
                result = dbus_proxy.call_sync(method, param,
                                              Gio.DBusCallFlags.NONE,
                                              GLib.MAXINT, None)
                if result:
                    return result.unpack()
            except GLib.Error as e:
                raise parse_dbus_error(e)
示例#7
0
 def callback(
     proxy: Base,
     result: Gio.Task,
     reply: Optional[Callable[..., None]],
     error: Optional[Callable[[BluezDBusException], None]],
 ) -> None:
     try:
         value = proxy.call_finish(result).unpack()
         if reply:
             reply(*value)
     except GLib.Error as e:
         if error:
             error(parse_dbus_error(e))
         else:
             logging.error(
                 f"Unhandled error for {self.get_interface_name()}.{method}",
                 exc_info=True)
示例#8
0
    def _call(self, method, param=None, properties=False, *args, **kwargs):
        def callback(proxy, result, reply_handler, error_handler):
            try:
                result = proxy.call_finish(result).unpack()
                reply_handler(*result)
            except GLib.Error as e:
                error_handler(parse_dbus_error(e))

        def ok(*args, **kwargs):
            if callable(reply_handler):
                reply_handler(*args, **kwargs)

        def err(e):
            if callable(error_handler):
                error_handler(e)
            else:
                raise exception

        if properties: dbus_proxy = self.__dbus_properties_proxy
        else: dbus_proxy = self.__dbus_proxy

        if 'reply_handler' in kwargs:
            reply_handler = kwargs.pop('reply_handler')
        else:
            reply_handler = None

        if 'error_handler' in kwargs:
            error_handler = kwargs.pop('error_handler')
        else:
            error_handler = None

        if reply_handler or error_handler:
            # Make sure we have an error handler if we do async calls
            assert(error_handler != None)

            dbus_proxy.call(method, param, Gio.DBusCallFlags.NONE, GLib.MAXINT, None,
                callback, ok, err)
        else:
            try:
                result = dbus_proxy.call_sync(method, param, Gio.DBusCallFlags.NONE,
                                              GLib.MAXINT, None)
                if result:
                    return result.unpack()
            except GLib.Error as e:
                raise parse_dbus_error(e)
示例#9
0
文件: Base.py 项目: zjsxwc/blueman
    def _call(self, method, *args, **kwargs):
        def ok(*args, **kwargs):
            if callable(reply_handler):
                reply_handler(*args, **kwargs)

        def err(e):
            exception = parse_dbus_error(e)
            if callable(error_handler):
                error_handler(exception)
            else:
                raise exception

        if 'interface' in kwargs:
            interface = kwargs.pop('interface')
        else:
            interface = self.__interface

        if 'reply_handler' in kwargs:
            reply_handler = kwargs.pop('reply_handler')
        else:
            reply_handler = None

        if 'error_handler' in kwargs:
            error_handler = kwargs.pop('error_handler')
        else:
            error_handler = None

        # Make sure we have an error handler if we do async calls
        if reply_handler: assert(error_handler is not None)

        try:
            if reply_handler or error_handler:
                return getattr(interface, method)(reply_handler=ok, error_handler=err, *args, **kwargs)
            else:
                return getattr(interface, method)(*args, **kwargs)
        except dbus.DBusException as exception:
            raise parse_dbus_error(exception)
示例#10
0
 def callback(proxy, result, reply_handler, error_handler):
     try:
         result = proxy.call_finish(result).unpack()
         reply_handler(*result)
     except GLib.Error as e:
         error_handler(parse_dbus_error(e))
示例#11
0
 def error_handler_wrapper(exception):
     exception = parse_dbus_error(exception)
     if not callable(error_handler):
         raise exception
     error_handler(exception)
示例#12
0
文件: Base.py 项目: zjsxwc/blueman
 def err(e):
     exception = parse_dbus_error(e)
     if callable(error_handler):
         error_handler(exception)
     else:
         raise exception
示例#13
0
 def callback(proxy, result, reply_handler, error_handler):
     try:
         result = proxy.call_finish(result).unpack()
         reply_handler(*result)
     except GLib.Error as e:
         error_handler(parse_dbus_error(e))