summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-message-util.c
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2007-04-06 12:13:13 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2007-04-06 12:13:13 +0000
commitc4a5da3e597e5ff782b52e48bc8ed2996ea90fa0 (patch)
treec3199e3b7afcc16a2d327feae559656f1ce5f5d1 /dbus/dbus-message-util.c
parent54eabbe892f34d794daf990138480f98f84ea82f (diff)
dbus/dbus-message-util.c, dbus/dbus-message.c, dbus/dbus-message.h:
Add API to convert a DBusMessage to/from a byte array. Patch from Dafydd Harries <dafydd.harries@collabora.co.uk>, approved by Havoc Pennington.
Diffstat (limited to 'dbus/dbus-message-util.c')
-rw-r--r--dbus/dbus-message-util.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/dbus/dbus-message-util.c b/dbus/dbus-message-util.c
index 67cfffdc..fb6fad8f 100644
--- a/dbus/dbus-message-util.c
+++ b/dbus/dbus-message-util.c
@@ -1222,6 +1222,46 @@ _dbus_message_test (const char *test_data_dir)
verify_test_message (message);
+ {
+ /* Marshal and demarshal the message. */
+
+ DBusMessage *message2;
+ DBusError error;
+ char *marshalled = NULL;
+ int len = 0;
+
+ dbus_error_init (&error);
+
+ if (!dbus_message_marshal (message, &marshalled, &len))
+ _dbus_assert_not_reached ("failed to marshal message");
+
+ _dbus_assert (len != 0);
+ _dbus_assert (marshalled != NULL);
+
+ message2 = dbus_message_demarshal (marshalled, len, &error);
+
+ _dbus_assert (message2 != NULL);
+ _dbus_assert (!dbus_error_is_set (&error));
+ verify_test_message (message2);
+
+ dbus_message_unref (message2);
+ dbus_free (marshalled);
+
+ /* Demarshal invalid message. */
+
+ message2 = dbus_message_demarshal ("invalid", 7, &error);
+ _dbus_assert (message2 == NULL);
+ _dbus_assert (dbus_error_is_set (&error));
+ dbus_error_free (&error);
+
+ /* Demarshal invalid (empty) message. */
+
+ message2 = dbus_message_demarshal ("", 0, &error);
+ _dbus_assert (message2 == NULL);
+ _dbus_assert (dbus_error_is_set (&error));
+ dbus_error_free (&error);
+ }
+
dbus_message_unref (message);
_dbus_message_loader_unref (loader);