diff options
Diffstat (limited to 'tutorius/dbustools.py')
-rw-r--r-- | tutorius/dbustools.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tutorius/dbustools.py b/tutorius/dbustools.py new file mode 100644 index 0000000..ce28d98 --- /dev/null +++ b/tutorius/dbustools.py @@ -0,0 +1,24 @@ +import logging + +def save_args(callable, *xargs, **xkwargs): + def __call(*args, **kwargs): + kw = dict() + kw.update(kwargs) + kw.update(xkwargs) + return callable(*(xargs+args), **kw) + return __call + +def ignore(*args): + logging.debug("Unhandled asynchronous dbus call response with arguments: %s", str(args)) + +def logError(error): + logging.error("Unhandled asynchronous dbus call error: %s", error) + +def remote_call(callable, args, return_cb=None, error_cb=None, block=False): + reply_cb = return_cb or ignore + errhandler_cb = error_cb or logError + if block: + return reply_cb(callable(*args)) + else: + callable(*args, reply_handler=reply_cb, error_handler=errhandler_cb) + |