From c77c7e343b73bb9c14319679063a55e5cf1ee1d6 Mon Sep 17 00:00:00 2001 From: Robert McQueen Date: Sun, 27 Nov 2005 16:40:57 +0000 Subject: 2005-11-27 Robert McQueen * python/dbus_bindings.pyx: Fix a bug where doing a strict append with type v of an instance of dbus.Variant(foo, type='x') caused it to be boxed twice before sending over the bus. * python/dbus_bindings.pyx, python/service.py, test/python/test-client.py: Update the constants for the new request_name flags, and update comments/test cases now that queueing is the default action. --- ChangeLog | 11 +++++++++++ python/dbus_bindings.pyx | 8 ++++++-- python/service.py | 5 +++-- test/python/test-client.py | 5 +++-- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 702784d3..e3e87802 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2005-11-27 Robert McQueen + + * python/dbus_bindings.pyx: Fix a bug where doing a strict append + with type v of an instance of dbus.Variant(foo, type='x') caused + it to be boxed twice before sending over the bus. + + * python/dbus_bindings.pyx, python/service.py, + test/python/test-client.py: Update the constants for the new + request_name flags, and update comments/test cases now that queueing + is the default action. + 2005-11-22 John (J5) Palmieri * configure.in: diff --git a/python/dbus_bindings.pyx b/python/dbus_bindings.pyx index 8b1b221b..21adc87a 100644 --- a/python/dbus_bindings.pyx +++ b/python/dbus_bindings.pyx @@ -1053,7 +1053,10 @@ cdef class MessageIter: tmp_sig = sig[1:-1] retval = self.append_struct(value, signature = tmp_sig) elif sig_type == TYPE_VARIANT: - retval = self.append_variant(Variant(value)) + if isinstance(value, Variant): + retval = self.append_variant(value) + else: + retval = self.append_variant(Variant(value)) elif sig_type == DICT_ENTRY_BEGIN: raise TypeError, "Signiture is invalid in append_strict. A dict entry must be part of an array." else: @@ -1748,8 +1751,9 @@ def bus_register(Connection connection): return retval -NAME_FLAG_PROHIBIT_REPLACEMENT = 0x1 +NAME_FLAG_ALLOW_REPLACEMENT = 0x1 NAME_FLAG_REPLACE_EXISTING = 0x2 +NAME_FLAG_DO_NOT_QUEUE = 0x4 REQUEST_NAME_REPLY_PRIMARY_OWNER = 1 REQUEST_NAME_REPLY_IN_QUEUE = 2 diff --git a/python/service.py b/python/service.py index e5a7002b..ad36e4f5 100644 --- a/python/service.py +++ b/python/service.py @@ -27,8 +27,9 @@ class BusName(object): if retval == dbus_bindings.REQUEST_NAME_REPLY_PRIMARY_OWNER: pass elif retval == dbus_bindings.REQUEST_NAME_REPLY_IN_QUEUE: - # you can't arrive at this state via the high-level bindings - # because you can't put flags in, but... who knows? + # queueing can happen by default, maybe we should + # track this better or let the user know if they're + # queued or not? pass elif retval == dbus_bindings.REQUEST_NAME_REPLY_EXISTS: raise NameExistsException(name) diff --git a/test/python/test-client.py b/test/python/test-client.py index e972f446..23000400 100755 --- a/test/python/test-client.py +++ b/test/python/test-client.py @@ -227,8 +227,9 @@ class TestDBusBindings(unittest.TestCase): print '\n******** Testing BusName creation ********' test = [('org.freedesktop.DBus.Python.TestName', True), ('org.freedesktop.DBus.Python.TestName', True), - ('org.freedesktop.DBus.Python.InvalidName&^*%$', False), - ('org.freedesktop.DBus.TestSuitePythonService', False)] + ('org.freedesktop.DBus.Python.InvalidName&^*%$', False)] + # Do some more intelligent handling/testing of queueing vs success? + # ('org.freedesktop.DBus.TestSuitePythonService', False)] # For some reason this actually succeeds # ('org.freedesktop.DBus', False)] -- cgit