summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert McQueen <robot101@debian.org>2005-11-27 16:40:57 +0000
committerRobert McQueen <robot101@debian.org>2005-11-27 16:40:57 +0000
commitc77c7e343b73bb9c14319679063a55e5cf1ee1d6 (patch)
tree4db3c1b4c48d49bdb528560072cbbaa5004b22d6
parentcaecde624d877cc09fd69f0cb27e39ace6524b9b (diff)
2005-11-27 Robert McQueen <robot101@debian.org>
* 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.
-rw-r--r--ChangeLog11
-rw-r--r--python/dbus_bindings.pyx8
-rw-r--r--python/service.py5
-rwxr-xr-xtest/python/test-client.py5
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 <robot101@debian.org>
+
+ * 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 <johnp@redhat.com>
* 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)]