summaryrefslogtreecommitdiff
path: root/dbus
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2011-05-17 18:54:55 +0100
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2011-05-18 12:29:09 +0100
commit86653c55435a05d047cc6bb191e2df64f3aa165c (patch)
tree5e97d640d80ac1105c06557c1cb723cfa5e9bb43 /dbus
parent95dc58760290d190a9f62d13d5b3936a0249cb43 (diff)
_ProxyMethod: allow an explicit signature to be given to method calls
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=36206 Reviewed-by: Will Thompson <will.thompson@collabora.co.uk>
Diffstat (limited to 'dbus')
-rw-r--r--dbus/proxies.py31
1 files changed, 18 insertions, 13 deletions
diff --git a/dbus/proxies.py b/dbus/proxies.py
index ebdc583..bf99a1c 100644
--- a/dbus/proxies.py
+++ b/dbus/proxies.py
@@ -102,6 +102,7 @@ class _ProxyMethod:
reply_handler = keywords.pop('reply_handler', None)
error_handler = keywords.pop('error_handler', None)
ignore_reply = keywords.pop('ignore_reply', False)
+ signature = keywords.pop('signature', None)
if reply_handler is not None or error_handler is not None:
if reply_handler is None:
@@ -114,18 +115,20 @@ class _ProxyMethod:
dbus_interface = keywords.pop('dbus_interface', self._dbus_interface)
- if dbus_interface is None:
- key = self._method_name
- else:
- key = dbus_interface + '.' + self._method_name
- introspect_sig = self._proxy._introspect_method_map.get(key, None)
+ if signature is None:
+ if dbus_interface is None:
+ key = self._method_name
+ else:
+ key = dbus_interface + '.' + self._method_name
+
+ signature = self._proxy._introspect_method_map.get(key, None)
if ignore_reply or reply_handler is not None:
self._connection.call_async(self._named_service,
self._object_path,
dbus_interface,
self._method_name,
- introspect_sig,
+ signature,
args,
reply_handler,
error_handler,
@@ -135,27 +138,29 @@ class _ProxyMethod:
self._object_path,
dbus_interface,
self._method_name,
- introspect_sig,
+ signature,
args,
**keywords)
def call_async(self, *args, **keywords):
reply_handler = keywords.pop('reply_handler', None)
error_handler = keywords.pop('error_handler', None)
+ signature = keywords.pop('signature', None)
dbus_interface = keywords.pop('dbus_interface', self._dbus_interface)
- if dbus_interface:
- key = dbus_interface + '.' + self._method_name
- else:
- key = self._method_name
- introspect_sig = self._proxy._introspect_method_map.get(key, None)
+ if signature is None:
+ if dbus_interface:
+ key = dbus_interface + '.' + self._method_name
+ else:
+ key = self._method_name
+ signature = self._proxy._introspect_method_map.get(key, None)
self._connection.call_async(self._named_service,
self._object_path,
dbus_interface,
self._method_name,
- introspect_sig,
+ signature,
args,
reply_handler,
error_handler,