mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-01-04 22:30:16 +01:00
2003-01-31 Anders Carlsson <andersca@codefactory.se>
* dbus/dbus-address.c: (dbus_address_entry_free): Free key and value lists. * dbus/dbus-internals.c: (_dbus_type_to_string): Add the types we didn't have. * dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos), (_dbus_marshal_validate_arg): Add NIL types. * dbus/dbus-message.c: (dbus_message_set_sender): Remove todo about being able to set sender to NULL. (dbus_message_set_is_error_reply), (dbus_message_get_is_error_reply): * dbus/dbus-message.h: New functions. * dbus/dbus-protocol.h: Add error reply flag. * test/data/valid-messages/opposite-endian.message: Add NIL type to test.
This commit is contained in:
parent
482dab2076
commit
8ab042b957
8 changed files with 88 additions and 11 deletions
26
ChangeLog
26
ChangeLog
|
|
@ -1,3 +1,29 @@
|
|||
2003-01-31 Anders Carlsson <andersca@codefactory.se>
|
||||
|
||||
* dbus/dbus-address.c: (dbus_address_entry_free):
|
||||
Free key and value lists.
|
||||
|
||||
* dbus/dbus-internals.c: (_dbus_type_to_string):
|
||||
Add the types we didn't have.
|
||||
|
||||
* dbus/dbus-marshal.c: (_dbus_marshal_get_arg_end_pos),
|
||||
(_dbus_marshal_validate_arg):
|
||||
Add NIL types.
|
||||
|
||||
* dbus/dbus-message.c: (dbus_message_set_sender):
|
||||
Remove todo about being able to set sender to NULL.
|
||||
|
||||
(dbus_message_set_is_error_reply),
|
||||
(dbus_message_get_is_error_reply):
|
||||
* dbus/dbus-message.h:
|
||||
New functions.
|
||||
|
||||
* dbus/dbus-protocol.h:
|
||||
Add error reply flag.
|
||||
|
||||
* test/data/valid-messages/opposite-endian.message:
|
||||
Add NIL type to test.
|
||||
|
||||
2003-01-31 Havoc Pennington <hp@pobox.com>
|
||||
|
||||
* doc/dbus-specification.sgml: fully specify the header. Add
|
||||
|
|
|
|||
|
|
@ -56,7 +56,8 @@ dbus_address_entry_free (DBusAddressEntry *entry)
|
|||
|
||||
link = _dbus_list_get_next_link (&entry->keys, link);
|
||||
}
|
||||
|
||||
_dbus_list_clear (&entry->keys);
|
||||
|
||||
link = _dbus_list_get_first_link (&entry->values);
|
||||
while (link != NULL)
|
||||
{
|
||||
|
|
@ -65,6 +66,7 @@ dbus_address_entry_free (DBusAddressEntry *entry)
|
|||
|
||||
link = _dbus_list_get_next_link (&entry->values, link);
|
||||
}
|
||||
_dbus_list_clear (&entry->values);
|
||||
|
||||
dbus_free (entry);
|
||||
}
|
||||
|
|
@ -73,8 +75,6 @@ dbus_address_entry_free (DBusAddressEntry *entry)
|
|||
/**
|
||||
* Frees a #NULL-terminated array of address entries.
|
||||
*
|
||||
* @todo dbus_address_entry_free() seems to leak list nodes
|
||||
*
|
||||
* @param entries the array.
|
||||
*/
|
||||
void
|
||||
|
|
|
|||
|
|
@ -366,6 +366,8 @@ _dbus_type_to_string (int type)
|
|||
{
|
||||
case DBUS_TYPE_INVALID:
|
||||
return "invalid";
|
||||
case DBUS_TYPE_NIL:
|
||||
return "nil";
|
||||
case DBUS_TYPE_INT32:
|
||||
return "int32";
|
||||
case DBUS_TYPE_UINT32:
|
||||
|
|
@ -374,8 +376,16 @@ _dbus_type_to_string (int type)
|
|||
return "double";
|
||||
case DBUS_TYPE_STRING:
|
||||
return "string";
|
||||
case DBUS_TYPE_INT32_ARRAY:
|
||||
return "int32 array";
|
||||
case DBUS_TYPE_UINT32_ARRAY:
|
||||
return "uint32 array";
|
||||
case DBUS_TYPE_DOUBLE_ARRAY:
|
||||
return "double array";
|
||||
case DBUS_TYPE_BYTE_ARRAY:
|
||||
return "byte array";
|
||||
case DBUS_TYPE_STRING_ARRAY:
|
||||
return "string array";
|
||||
default:
|
||||
return "unknown";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -875,6 +875,9 @@ _dbus_marshal_get_arg_end_pos (const DBusString *str,
|
|||
return FALSE;
|
||||
break;
|
||||
|
||||
case DBUS_TYPE_NIL:
|
||||
*end_pos = pos + 1;
|
||||
|
||||
case DBUS_TYPE_INT32:
|
||||
*end_pos = _DBUS_ALIGN_VALUE (pos + 1, sizeof (dbus_int32_t)) + sizeof (dbus_int32_t);
|
||||
|
||||
|
|
@ -989,6 +992,7 @@ _dbus_marshal_get_arg_end_pos (const DBusString *str,
|
|||
* @param str the string
|
||||
* @param byte_order the byte order
|
||||
* @param pos the unaligned string position (snap to next aligned)
|
||||
* @param new_pos return location for new position.
|
||||
*/
|
||||
static int
|
||||
demarshal_and_validate_len (const DBusString *str,
|
||||
|
|
@ -1095,6 +1099,10 @@ _dbus_marshal_validate_arg (const DBusString *str,
|
|||
case DBUS_TYPE_INVALID:
|
||||
return FALSE;
|
||||
break;
|
||||
|
||||
case DBUS_TYPE_NIL:
|
||||
*end_pos = pos + 1;
|
||||
break;
|
||||
|
||||
case DBUS_TYPE_INT32:
|
||||
case DBUS_TYPE_UINT32:
|
||||
|
|
|
|||
|
|
@ -1612,8 +1612,6 @@ dbus_message_iter_get_string_array (DBusMessageIter *iter,
|
|||
/**
|
||||
* Sets the message sender.
|
||||
*
|
||||
* @todo implement #NULL sender to unset
|
||||
*
|
||||
* @param message the message
|
||||
* @param sender the sender
|
||||
* @returns #FALSE if not enough memory
|
||||
|
|
@ -1637,6 +1635,33 @@ dbus_message_set_sender (DBusMessage *message,
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
dbus_message_set_is_error_reply (DBusMessage *message,
|
||||
dbus_bool_t is_error_reply)
|
||||
{
|
||||
char *header;
|
||||
|
||||
_dbus_assert (!message->locked);
|
||||
|
||||
_dbus_string_get_data_len (&message->header, &header, 1, 1);
|
||||
|
||||
if (is_error_reply)
|
||||
*header |= DBUS_HEADER_FLAG_IS_ERROR_REPLY;
|
||||
else
|
||||
*header &= ~DBUS_HEADER_FLAG_IS_ERROR_REPLY;
|
||||
|
||||
}
|
||||
|
||||
dbus_bool_t
|
||||
dbus_message_get_is_error_reply (DBusMessage *message)
|
||||
{
|
||||
const char *header;
|
||||
|
||||
_dbus_string_get_data_len (&message->header, &header, 1, 1);
|
||||
|
||||
return (*header & DBUS_HEADER_FLAG_IS_ERROR_REPLY) != 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the service which originated this message,
|
||||
* or #NULL if unknown or inapplicable.
|
||||
|
|
|
|||
|
|
@ -45,11 +45,15 @@ DBusMessage *dbus_message_new_from_message (const DBusMessage *message);
|
|||
void dbus_message_ref (DBusMessage *message);
|
||||
void dbus_message_unref (DBusMessage *message);
|
||||
|
||||
const char* dbus_message_get_name (DBusMessage *message);
|
||||
const char* dbus_message_get_service (DBusMessage *message);
|
||||
dbus_bool_t dbus_message_set_sender (DBusMessage *message,
|
||||
const char *sender);
|
||||
const char* dbus_message_get_sender (DBusMessage *message);
|
||||
const char* dbus_message_get_name (DBusMessage *message);
|
||||
const char* dbus_message_get_service (DBusMessage *message);
|
||||
dbus_bool_t dbus_message_set_sender (DBusMessage *message,
|
||||
const char *sender);
|
||||
const char* dbus_message_get_sender (DBusMessage *message);
|
||||
void dbus_message_set_is_error_reply (DBusMessage *message,
|
||||
dbus_bool_t is_error_reply);
|
||||
dbus_bool_t dbus_message_get_is_error_reply (DBusMessage *message);
|
||||
|
||||
|
||||
dbus_bool_t dbus_message_append_fields (DBusMessage *message,
|
||||
int first_field_type,
|
||||
|
|
|
|||
|
|
@ -52,7 +52,9 @@ extern "C" {
|
|||
#define DBUS_TYPE_BYTE_ARRAY 9
|
||||
#define DBUS_TYPE_STRING_ARRAY 10
|
||||
|
||||
#
|
||||
/* Header flags */
|
||||
#define DBUS_HEADER_FLAG_IS_ERROR_REPLY 0x1
|
||||
|
||||
/* Header fields */
|
||||
#define DBUS_HEADER_FIELD_NAME "name"
|
||||
#define DBUS_HEADER_FIELD_SERVICE "srvc"
|
||||
|
|
|
|||
|
|
@ -31,4 +31,6 @@ STRING 'Hello this is a string'
|
|||
TYPE DOUBLE
|
||||
DOUBLE 3.14159
|
||||
|
||||
TYPE NIL
|
||||
|
||||
END_LENGTH Body
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue