From 5175ad00e1d648a89efdf8d397b31bf84fd203c8 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Mon, 6 Jan 2003 22:09:16 +0000 Subject: 2003-01-07 Anders Carlsson * dbus/dbus-marshal.c: (_dbus_marshal_string), (_dbus_demarshal_string), (_dbus_marshal_test): * dbus/dbus-marshal.h: Document these functions. * dbus/dbus-message.c: (dbus_message_get_name), (dbus_message_append_int32), (dbus_message_append_uint32), (dbus_message_append_double), (dbus_message_append_string), (dbus_message_append_byte_array): * dbus/dbus-message.h: Add functions for adding message fields of different types. * dbus/dbus-protocol.h: Add the different types. --- dbus/dbus-message.c | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) (limited to 'dbus/dbus-message.c') diff --git a/dbus/dbus-message.c b/dbus/dbus-message.c index aed943f7..b7f66644 100644 --- a/dbus/dbus-message.c +++ b/dbus/dbus-message.c @@ -22,6 +22,7 @@ */ #include "dbus-internals.h" +#include "dbus-marshal.h" #include "dbus-message.h" #include "dbus-message-internal.h" #include "dbus-memory.h" @@ -202,6 +203,7 @@ dbus_message_unref (DBusMessage *message) /** * Gets the name of a message. + * * @param message the message * @returns the message name (should not be freed) */ @@ -213,6 +215,115 @@ dbus_message_get_name (DBusMessage *message) return NULL; } +/** + * Appends a 32 bit signed integer to the message. + * + * @param message the message + * @param value the integer value + * @returns #TRUE on success + */ +dbus_bool_t +dbus_message_append_int32 (DBusMessage *message, + dbus_int32_t value) +{ + _dbus_assert (message != NULL); + _dbus_assert (!message->locked); + + if (!_dbus_string_append_byte (&message->body, DBUS_TYPE_INT32)) + return FALSE; + + return _dbus_marshal_int32 (&message->body, + DBUS_COMPILER_BYTE_ORDER, value); +} + +/** + * Appends a 32 bit unsigned integer to the message. + * + * @param message the message + * @param value the integer value + * @returns #TRUE on success + */ +dbus_bool_t +dbus_message_append_uint32 (DBusMessage *message, + dbus_uint32_t value) +{ + _dbus_assert (message != NULL); + _dbus_assert (!message->locked); + + if (!_dbus_string_append_byte (&message->body, DBUS_TYPE_UINT32)) + return FALSE; + + return _dbus_marshal_uint32 (&message->body, + DBUS_COMPILER_BYTE_ORDER, value); +} + +/** + * Appends a double value to the message. + * + * @param message the message + * @param value the double value + * @returns #TRUE on success + */ +dbus_bool_t +dbus_message_append_double (DBusMessage *message, + double value) +{ + _dbus_assert (message != NULL); + _dbus_assert (!message->locked); + + if (!_dbus_string_append_byte (&message->body, DBUS_TYPE_INT32)) + return FALSE; + + return _dbus_marshal_double (&message->body, + DBUS_COMPILER_BYTE_ORDER, value); +} + +/** + * Appends a UTF-8 string to the message. + * + * @param message the message + * @param value the string + * @returns #TRUE on success + */ +dbus_bool_t +dbus_message_append_string (DBusMessage *message, + const char *value) +{ + _dbus_assert (message != NULL); + _dbus_assert (!message->locked); + _dbus_assert (value != NULL); + + if (!_dbus_string_append_byte (&message->body, DBUS_TYPE_UTF8_STRING)) + return FALSE; + + return _dbus_marshal_string (&message->body, + DBUS_COMPILER_BYTE_ORDER, value); +} + +/** + * Appends a byte array to the message. + * + * @param message the message + * @param value the array + * @param len the length of the array + * @returns #TRUE on success + */ +dbus_bool_t +dbus_message_append_byte_array (DBusMessage *message, + unsigned const char *value, + int len) +{ + _dbus_assert (message != NULL); + _dbus_assert (!message->locked); + _dbus_assert (value != NULL); + + if (!_dbus_string_append_byte (&message->body, DBUS_TYPE_BYTE_ARRAY)) + return FALSE; + + return _dbus_marshal_byte_array (&message->body, + DBUS_COMPILER_BYTE_ORDER, value, len); +} + /** @} */ /** -- cgit