diff options
Diffstat (limited to 'python')
-rw-r--r-- | python/decorators.py | 6 | ||||
-rw-r--r-- | python/service.py | 4 |
2 files changed, 9 insertions, 1 deletions
diff --git a/python/decorators.py b/python/decorators.py index e4cc0249..c9bc17fa 100644 --- a/python/decorators.py +++ b/python/decorators.py @@ -2,7 +2,7 @@ import _util import inspect import dbus_bindings -def method(dbus_interface, in_signature=None, out_signature=None, async_callbacks=None): +def method(dbus_interface, in_signature=None, out_signature=None, async_callbacks=None, sender_keyword=None): _util._validate_interface_or_name(dbus_interface) def decorator(func): @@ -17,6 +17,9 @@ def method(dbus_interface, in_signature=None, out_signature=None, async_callback args.remove(async_callbacks[0]) args.remove(async_callbacks[1]) + if sender_keyword: + args.remove(sender_keyword) + if in_signature: in_sig = tuple(dbus_bindings.Signature(in_signature)) @@ -30,6 +33,7 @@ def method(dbus_interface, in_signature=None, out_signature=None, async_callback func._dbus_interface = dbus_interface func._dbus_in_signature = in_signature func._dbus_out_signature = out_signature + func._dbus_sender_keyword = sender_keyword func._dbus_args = args return func diff --git a/python/service.py b/python/service.py index 3eec65f6..409fc78a 100644 --- a/python/service.py +++ b/python/service.py @@ -294,6 +294,10 @@ class Object(Interface): keywords[return_callback] = lambda *retval: _method_reply_return(connection, message, method_name, signature, *retval) keywords[error_callback] = lambda exception: _method_reply_error(connection, message, exception) + # include the sender if desired + if parent_method._dbus_sender_keyword: + keywords[parent_method._dbus_sender_keyword] = message.get_sender() + # call method retval = candidate_method(self, *args, **keywords) |