diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2011-05-17 18:54:55 +0100 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2011-05-18 12:29:09 +0100 |
commit | 86653c55435a05d047cc6bb191e2df64f3aa165c (patch) | |
tree | 5e97d640d80ac1105c06557c1cb723cfa5e9bb43 /dbus | |
parent | 95dc58760290d190a9f62d13d5b3936a0249cb43 (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.py | 31 |
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, |