Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/tutorius/dbustools.py
diff options
context:
space:
mode:
authorVincent Vinet <vince.vinet@gmail.com>2009-10-15 14:23:57 (GMT)
committer Vincent Vinet <vince.vinet@gmail.com>2009-10-15 14:23:57 (GMT)
commitf14bcb9b6c79f7f071e32a7ef9bba5ce440096bd (patch)
tree2f4fd1920e484bfdb567eabe83701cd7306d372d /tutorius/dbustools.py
parentb0274f9a824d8ef82cbe66398d5afaa6ca75d9dc (diff)
Big commit! Everything to make Tutorial execution work through dbus.
Diffstat (limited to 'tutorius/dbustools.py')
-rw-r--r--tutorius/dbustools.py24
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)
+