D-Bus
1.6.12
|
DBusMessage private implementation details. More...
Data Structures | |
struct | DBusMessageLoader |
Implementation details of DBusMessageLoader. More... | |
struct | DBusMessage |
Internals of DBusMessage. More... | |
struct | DBusMessageRealIter |
Internals of DBusMessageIter. More... | |
Macros | |
#define | CHANGED_STAMP_BITS 21 |
How many bits are in the changed_stamp used to validate iterators. | |
#define | _dbus_enable_message_cache() (TRUE) |
#define | ensure_byte_order(message) _dbus_message_byteswap (message) |
byte-swap the message if it doesn't match our byte order. More... | |
#define | MAX_MESSAGE_SIZE_TO_CACHE 10 * _DBUS_ONE_KILOBYTE |
Avoid caching huge messages. | |
#define | MAX_MESSAGE_CACHE_SIZE 5 |
Avoid caching too many messages. | |
#define | INITIAL_LOADER_DATA_LEN 32 |
The initial buffer size of the message loader. More... | |
Typedefs | |
typedef struct DBusMessageRealIter | DBusMessageRealIter |
typedef for internals of message iterator | |
typedef struct DBusMessageLoader | DBusMessageLoader |
The DBusMessageLoader object encapsulates the process of converting a byte stream into a series of DBusMessage. More... | |
Enumerations | |
enum | { DBUS_MESSAGE_ITER_TYPE_READER = 3, DBUS_MESSAGE_ITER_TYPE_WRITER = 7 } |
Functions | |
dbus_bool_t | _dbus_message_iter_get_args_valist (DBusMessageIter *iter, DBusError *error, int first_arg_type, va_list var_args) |
Implementation of the varargs arg-getting functions. More... | |
void | _dbus_message_trace_ref (DBusMessage *message, int old_refcount, int new_refcount, const char *why) |
_DBUS_STRING_DEFINE_STATIC (_dbus_empty_signature_str,"") | |
An static string representing an empty signature. | |
void | _dbus_message_get_network_data (DBusMessage *message, const DBusString **header, const DBusString **body) |
Gets the data to be sent over the network for this message. More... | |
void | _dbus_message_get_unix_fds (DBusMessage *message, const int **fds, unsigned *n_fds) |
Gets the unix fds to be sent over the network for this message. More... | |
void | dbus_message_set_serial (DBusMessage *message, dbus_uint32_t serial) |
Sets the serial number of a message. More... | |
void | _dbus_message_add_counter_link (DBusMessage *message, DBusList *link) |
Adds a counter to be incremented immediately with the size/unix fds of this message, and decremented by the size/unix fds of this message when this message if finalized. More... | |
dbus_bool_t | _dbus_message_add_counter (DBusMessage *message, DBusCounter *counter) |
Adds a counter to be incremented immediately with the size/unix fds of this message, and decremented by the size/unix fds of this message when this message if finalized. More... | |
void | _dbus_message_remove_counter (DBusMessage *message, DBusCounter *counter) |
Removes a counter tracking the size/unix fds of this message, and decrements the counter by the size/unix fds of this message. More... | |
void | dbus_message_lock (DBusMessage *message) |
Locks a message. More... | |
DBusMessageLoader * | _dbus_message_loader_new (void) |
Creates a new message loader. More... | |
DBusMessageLoader * | _dbus_message_loader_ref (DBusMessageLoader *loader) |
Increments the reference count of the loader. More... | |
void | _dbus_message_loader_unref (DBusMessageLoader *loader) |
Decrements the reference count of the loader and finalizes the loader when the count reaches zero. More... | |
void | _dbus_message_loader_get_buffer (DBusMessageLoader *loader, DBusString **buffer) |
Gets the buffer to use for reading data from the network. More... | |
void | _dbus_message_loader_return_buffer (DBusMessageLoader *loader, DBusString *buffer, int bytes_read) |
Returns a buffer obtained from _dbus_message_loader_get_buffer(), indicating to the loader how many bytes of the buffer were filled in. More... | |
dbus_bool_t | _dbus_message_loader_get_unix_fds (DBusMessageLoader *loader, int **fds, unsigned *max_n_fds) |
Gets the buffer to use for reading unix fds from the network. More... | |
void | _dbus_message_loader_return_unix_fds (DBusMessageLoader *loader, int *fds, unsigned n_fds) |
Returns a buffer obtained from _dbus_message_loader_get_unix_fds(). More... | |
dbus_bool_t | _dbus_message_loader_queue_messages (DBusMessageLoader *loader) |
Converts buffered data into messages, if we have enough data. More... | |
DBusMessage * | _dbus_message_loader_peek_message (DBusMessageLoader *loader) |
Peeks at first loaded message, returns NULL if no messages have been queued. More... | |
DBusMessage * | _dbus_message_loader_pop_message (DBusMessageLoader *loader) |
Pops a loaded message (passing ownership of the message to the caller). More... | |
DBusList * | _dbus_message_loader_pop_message_link (DBusMessageLoader *loader) |
Pops a loaded message inside a list link (passing ownership of the message and link to the caller). More... | |
void | _dbus_message_loader_putback_message_link (DBusMessageLoader *loader, DBusList *link) |
Returns a popped message link, used to undo a pop. More... | |
dbus_bool_t | _dbus_message_loader_get_is_corrupted (DBusMessageLoader *loader) |
Checks whether the loader is confused due to bad data. More... | |
DBusValidity | _dbus_message_loader_get_corruption_reason (DBusMessageLoader *loader) |
Checks what kind of bad data confused the loader. More... | |
void | _dbus_message_loader_set_max_message_size (DBusMessageLoader *loader, long size) |
Sets the maximum size message we allow. More... | |
long | _dbus_message_loader_get_max_message_size (DBusMessageLoader *loader) |
Gets the maximum allowed message size in bytes. More... | |
void | _dbus_message_loader_set_max_message_unix_fds (DBusMessageLoader *loader, long n) |
Sets the maximum unix fds per message we allow. More... | |
long | _dbus_message_loader_get_max_message_unix_fds (DBusMessageLoader *loader) |
Gets the maximum allowed number of unix fds per message. More... | |
dbus_bool_t | dbus_message_allocate_data_slot (dbus_int32_t *slot_p) |
Allocates an integer ID to be used for storing application-specific data on any DBusMessage. More... | |
void | dbus_message_free_data_slot (dbus_int32_t *slot_p) |
Deallocates a global ID for message data slots. More... | |
dbus_bool_t | dbus_message_set_data (DBusMessage *message, dbus_int32_t slot, void *data, DBusFreeFunction free_data_func) |
Stores a pointer on a DBusMessage, along with an optional function to be used for freeing the data when the data is set again, or when the message is finalized. More... | |
void * | dbus_message_get_data (DBusMessage *message, dbus_int32_t slot) |
Retrieves data previously set with dbus_message_set_data(). More... | |
int | dbus_message_type_from_string (const char *type_str) |
Utility function to convert a machine-readable (not translated) string into a D-Bus message type. More... | |
const char * | dbus_message_type_to_string (int type) |
Utility function to convert a D-Bus message type into a machine-readable string (not translated). More... | |
dbus_bool_t | dbus_message_marshal (DBusMessage *msg, char **marshalled_data_p, int *len_p) |
Turn a DBusMessage into the marshalled form as described in the D-Bus specification. More... | |
DBusMessage * | dbus_message_demarshal (const char *str, int len, DBusError *error) |
Demarshal a D-Bus message from the format described in the D-Bus specification. More... | |
int | dbus_message_demarshal_bytes_needed (const char *buf, int len) |
Returns the number of bytes required to be in the buffer to demarshal a D-Bus message. More... | |
DBusMessage private implementation details.
The guts of DBusMessage and its methods.
#define ensure_byte_order | ( | message | ) | _dbus_message_byteswap (message) |
byte-swap the message if it doesn't match our byte order.
Called only when we need the message in our own byte order, normally when reading arrays of integers or doubles. Otherwise should not be called since it would do needless work.
Definition at line 194 of file dbus-message.c.
#define INITIAL_LOADER_DATA_LEN 32 |
The initial buffer size of the message loader.
Definition at line 3776 of file dbus-message.c.
Referenced by _dbus_message_loader_new().
The DBusMessageLoader object encapsulates the process of converting a byte stream into a series of DBusMessage.
It buffers the incoming bytes as efficiently as possible, and generates a queue of messages. DBusMessageLoader is typically used as part of a DBusTransport implementation. The DBusTransport then hands off the loaded messages to a DBusConnection, making the messages visible to the application.
Definition at line 48 of file dbus-message-internal.h.
dbus_bool_t _dbus_message_add_counter | ( | DBusMessage * | message, |
DBusCounter * | counter | ||
) |
Adds a counter to be incremented immediately with the size/unix fds of this message, and decremented by the size/unix fds of this message when this message if finalized.
This function may be called with locks held. As a result, the counter's notify function is not called; the caller is expected to either call _dbus_counter_notify() on the counter when they are no longer holding locks, or take the same action that would be taken by the notify function.
message | the message |
counter | the counter |
Definition at line 328 of file dbus-message.c.
References _dbus_counter_ref(), _dbus_list_alloc_link(), _dbus_message_add_counter_link(), FALSE, NULL, and TRUE.
Referenced by _dbus_transport_queue_messages().
void _dbus_message_add_counter_link | ( | DBusMessage * | message, |
DBusList * | link | ||
) |
Adds a counter to be incremented immediately with the size/unix fds of this message, and decremented by the size/unix fds of this message when this message if finalized.
The link contains a counter with its refcount already incremented, but the counter itself not incremented. Ownership of link and counter refcount is passed to the message.
This function may be called with locks held. As a result, the counter's notify function is not called; the caller is expected to either call _dbus_counter_notify() on the counter when they are no longer holding locks, or take the same action that would be taken by the notify function.
message | the message |
link | link with counter as data |
Definition at line 279 of file dbus-message.c.
References _dbus_counter_adjust_size(), _dbus_counter_adjust_unix_fd(), _dbus_list_append_link(), _dbus_string_get_length(), DBusMessage::body, DBusMessage::counters, DBusList::data, DBusHeader::data, DBusMessage::header, NULL, and DBusMessage::size_counter_delta.
Referenced by _dbus_message_add_counter().
void _dbus_message_get_network_data | ( | DBusMessage * | message, |
const DBusString ** | header, | ||
const DBusString ** | body | ||
) |
Gets the data to be sent over the network for this message.
The header and then the body should be written out. This function is guaranteed to always return the same data once a message is locked (with dbus_message_lock()).
message | the message. |
header | return location for message header data. |
body | return location for message body data. |
Definition at line 207 of file dbus-message.c.
References _dbus_assert, DBusMessage::body, DBusHeader::data, DBusMessage::header, and DBusMessage::locked.
void _dbus_message_get_unix_fds | ( | DBusMessage * | message, |
const int ** | fds, | ||
unsigned * | n_fds | ||
) |
Gets the unix fds to be sent over the network for this message.
This function is guaranteed to always return the same data once a message is locked (with dbus_message_lock()).
message | the message. |
fds | return location of unix fd array |
n_fds | return number of entries in array |
Definition at line 226 of file dbus-message.c.
References _dbus_assert, DBusMessage::locked, and NULL.
dbus_bool_t _dbus_message_iter_get_args_valist | ( | DBusMessageIter * | iter, |
DBusError * | error, | ||
int | first_arg_type, | ||
va_list | var_args | ||
) |
Implementation of the varargs arg-getting functions.
dbus_message_get_args() is the place to go for complete documentation.
iter | the message iter |
error | error to be filled in |
first_arg_type | type of the first argument |
var_args | return location for first argument, followed by list of type/location pairs |
Definition at line 784 of file dbus-message.c.
References _dbus_assert, _dbus_dup(), _dbus_strdup(), _dbus_type_reader_get_current_type(), _dbus_type_reader_get_element_type(), _dbus_type_reader_next(), _dbus_type_reader_read_basic(), _dbus_type_reader_read_fixed_multi(), _dbus_type_reader_recurse(), _dbus_type_to_string(), _dbus_warn(), DBUS_ERROR_INCONSISTENT_MESSAGE, DBUS_ERROR_INVALID_ARGS, DBUS_ERROR_NOT_SUPPORTED, dbus_free_string_array(), dbus_message_iter_get_arg_type(), dbus_new0, dbus_set_error(), DBUS_TYPE_ARRAY, DBUS_TYPE_INVALID, dbus_type_is_basic(), dbus_type_is_fixed(), DBUS_TYPE_UNIX_FD, FALSE, DBusMessageRealIter::message, NULL, DBusMessageRealIter::reader, TRUE, DBusMessageRealIter::u, and DBusBasicValue::u32.
Referenced by dbus_message_get_args_valist().
void _dbus_message_loader_get_buffer | ( | DBusMessageLoader * | loader, |
DBusString ** | buffer | ||
) |
Gets the buffer to use for reading data from the network.
Network data is read directly into an allocated buffer, which is then used in the DBusMessage, to avoid as many extra memcpy's as possible. The buffer must always be returned immediately using _dbus_message_loader_return_buffer(), even if no bytes are successfully read.
loader | the message loader. |
buffer | the buffer |
Definition at line 3884 of file dbus-message.c.
References _dbus_assert, DBusMessageLoader::buffer_outstanding, DBusMessageLoader::data, and TRUE.
Referenced by dbus_message_demarshal().
DBusValidity _dbus_message_loader_get_corruption_reason | ( | DBusMessageLoader * | loader | ) |
Checks what kind of bad data confused the loader.
loader | the loader |
Definition at line 4356 of file dbus-message.c.
References _dbus_assert, DBusMessageLoader::corrupted, DBusMessageLoader::corruption_reason, and DBUS_VALID.
dbus_bool_t _dbus_message_loader_get_is_corrupted | ( | DBusMessageLoader * | loader | ) |
Checks whether the loader is confused due to bad data.
If messages are received that are invalid, the loader gets confused and gives up permanently. This state is called "corrupted."
loader | the loader |
Definition at line 4342 of file dbus-message.c.
References _dbus_assert, DBusMessageLoader::corrupted, DBusMessageLoader::corruption_reason, and DBUS_VALID.
Referenced by _dbus_transport_queue_messages(), and dbus_message_demarshal().
long _dbus_message_loader_get_max_message_size | ( | DBusMessageLoader * | loader | ) |
Gets the maximum allowed message size in bytes.
loader | the loader |
Definition at line 4390 of file dbus-message.c.
References DBusMessageLoader::max_message_size.
Referenced by _dbus_transport_get_max_message_size().
long _dbus_message_loader_get_max_message_unix_fds | ( | DBusMessageLoader * | loader | ) |
Gets the maximum allowed number of unix fds per message.
loader | the loader |
Definition at line 4421 of file dbus-message.c.
References DBusMessageLoader::max_message_unix_fds.
Referenced by _dbus_transport_get_max_message_unix_fds().
dbus_bool_t _dbus_message_loader_get_unix_fds | ( | DBusMessageLoader * | loader, |
int ** | fds, | ||
unsigned * | max_n_fds | ||
) |
Gets the buffer to use for reading unix fds from the network.
This works similar to _dbus_message_loader_get_buffer()
loader | the message loader. |
fds | the array to read fds into |
max_n_fds | how many fds to read at most |
Definition at line 3926 of file dbus-message.c.
References _dbus_assert, _dbus_assert_not_reached, dbus_realloc(), FALSE, DBusMessageLoader::max_message_unix_fds, and TRUE.
DBusMessageLoader* _dbus_message_loader_new | ( | void | ) |
Creates a new message loader.
Returns NULL if memory can't be allocated.
Definition at line 3785 of file dbus-message.c.
References _dbus_string_init(), _dbus_string_set_length(), DBusMessageLoader::corrupted, DBusMessageLoader::corruption_reason, DBusMessageLoader::data, dbus_free(), DBUS_MAXIMUM_MESSAGE_LENGTH, dbus_new0, DBUS_VALID, FALSE, INITIAL_LOADER_DATA_LEN, DBusMessageLoader::max_message_size, DBusMessageLoader::max_message_unix_fds, NULL, and DBusMessageLoader::refcount.
Referenced by _dbus_transport_init_base(), and dbus_message_demarshal().
DBusMessage* _dbus_message_loader_peek_message | ( | DBusMessageLoader * | loader | ) |
Peeks at first loaded message, returns NULL if no messages have been queued.
loader | the loader. |
Definition at line 4283 of file dbus-message.c.
References DBusList::data, DBusMessageLoader::messages, and NULL.
Referenced by _dbus_transport_get_dispatch_status().
DBusMessage* _dbus_message_loader_pop_message | ( | DBusMessageLoader * | loader | ) |
Pops a loaded message (passing ownership of the message to the caller).
Returns NULL if no messages have been queued.
loader | the loader. |
Definition at line 4300 of file dbus-message.c.
References _dbus_list_pop_first(), and DBusMessageLoader::messages.
Referenced by dbus_message_demarshal().
DBusList* _dbus_message_loader_pop_message_link | ( | DBusMessageLoader * | loader | ) |
Pops a loaded message inside a list link (passing ownership of the message and link to the caller).
Returns NULL if no messages have been loaded.
loader | the loader. |
Definition at line 4314 of file dbus-message.c.
References _dbus_list_pop_first_link(), and DBusMessageLoader::messages.
Referenced by _dbus_transport_queue_messages().
void _dbus_message_loader_putback_message_link | ( | DBusMessageLoader * | loader, |
DBusList * | link | ||
) |
Returns a popped message link, used to undo a pop.
loader | the loader |
link | the link with a message in it |
Definition at line 4326 of file dbus-message.c.
References _dbus_list_prepend_link(), and DBusMessageLoader::messages.
Referenced by _dbus_transport_queue_messages().
dbus_bool_t _dbus_message_loader_queue_messages | ( | DBusMessageLoader * | loader | ) |
Converts buffered data into messages, if we have enough data.
If we don't have enough data, does nothing.
loader | the loader. |
Definition at line 4220 of file dbus-message.c.
References _dbus_assert, _dbus_header_have_message_untrusted(), _dbus_list_find_last(), _dbus_string_get_length(), DBusMessageLoader::corrupted, DBusMessageLoader::corruption_reason, DBusMessageLoader::data, dbus_message_unref(), DBUS_MINIMUM_HEADER_SIZE, DBUS_VALID, FALSE, DBusMessageLoader::max_message_size, DBusMessageLoader::messages, NULL, and TRUE.
Referenced by _dbus_transport_get_dispatch_status(), and dbus_message_demarshal().
DBusMessageLoader* _dbus_message_loader_ref | ( | DBusMessageLoader * | loader | ) |
Increments the reference count of the loader.
loader | the loader. |
Definition at line 3833 of file dbus-message.c.
References DBusMessageLoader::refcount.
void _dbus_message_loader_return_buffer | ( | DBusMessageLoader * | loader, |
DBusString * | buffer, | ||
int | bytes_read | ||
) |
Returns a buffer obtained from _dbus_message_loader_get_buffer(), indicating to the loader how many bytes of the buffer were filled in.
This function must always be called, even if no bytes were successfully read.
loader | the loader. |
buffer | the buffer. |
bytes_read | number of bytes that were read into the buffer. |
Definition at line 3905 of file dbus-message.c.
References _dbus_assert, DBusMessageLoader::buffer_outstanding, DBusMessageLoader::data, and FALSE.
Referenced by dbus_message_demarshal().
void _dbus_message_loader_return_unix_fds | ( | DBusMessageLoader * | loader, |
int * | fds, | ||
unsigned | n_fds | ||
) |
Returns a buffer obtained from _dbus_message_loader_get_unix_fds().
This works similar to _dbus_message_loader_return_buffer()
loader | the message loader. |
fds | the array fds were read into |
max_n_fds | how many fds were read |
Definition at line 3975 of file dbus-message.c.
References _dbus_assert, _dbus_assert_not_reached, and FALSE.
void _dbus_message_loader_set_max_message_size | ( | DBusMessageLoader * | loader, |
long | size | ||
) |
Sets the maximum size message we allow.
loader | the loader |
size | the max message size in bytes |
Definition at line 4371 of file dbus-message.c.
References DBUS_MAXIMUM_MESSAGE_LENGTH, and DBusMessageLoader::max_message_size.
Referenced by _dbus_transport_set_max_message_size().
void _dbus_message_loader_set_max_message_unix_fds | ( | DBusMessageLoader * | loader, |
long | n | ||
) |
Sets the maximum unix fds per message we allow.
loader | the loader |
size | the max number of unix fds in a message |
Definition at line 4402 of file dbus-message.c.
References DBUS_MAXIMUM_MESSAGE_UNIX_FDS, and DBusMessageLoader::max_message_unix_fds.
Referenced by _dbus_transport_set_max_message_unix_fds().
void _dbus_message_loader_unref | ( | DBusMessageLoader * | loader | ) |
Decrements the reference count of the loader and finalizes the loader when the count reaches zero.
loader | the loader. |
Definition at line 3847 of file dbus-message.c.
References _dbus_list_clear(), _dbus_list_foreach(), _dbus_string_free(), DBusMessageLoader::data, dbus_free(), dbus_message_unref(), DBusMessageLoader::messages, NULL, and DBusMessageLoader::refcount.
Referenced by _dbus_transport_finalize_base(), _dbus_transport_init_base(), and dbus_message_demarshal().
void _dbus_message_remove_counter | ( | DBusMessage * | message, |
DBusCounter * | counter | ||
) |
Removes a counter tracking the size/unix fds of this message, and decrements the counter by the size/unix fds of this message.
message | the message |
counter | the counter |
Definition at line 351 of file dbus-message.c.
References _dbus_assert, _dbus_counter_adjust_size(), _dbus_counter_adjust_unix_fd(), _dbus_counter_notify(), _dbus_counter_unref(), _dbus_list_find_last(), _dbus_list_remove_link(), DBusMessage::counters, NULL, and DBusMessage::size_counter_delta.
Referenced by _dbus_connection_message_sent_unlocked().
dbus_bool_t dbus_message_allocate_data_slot | ( | dbus_int32_t * | slot_p | ) |
Allocates an integer ID to be used for storing application-specific data on any DBusMessage.
The allocated ID may then be used with dbus_message_set_data() and dbus_message_get_data(). The passed-in slot must be initialized to -1, and is filled in with the slot ID. If the passed-in slot is not -1, it's assumed to be already allocated, and its refcount is incremented.
The allocated slot is global, i.e. all DBusMessage objects will have a slot with the given integer ID reserved.
slot_p | address of a global variable storing the slot |
Definition at line 4444 of file dbus-message.c.
References _dbus_data_slot_allocator_alloc(), and _DBUS_LOCK_NAME.
DBusMessage* dbus_message_demarshal | ( | const char * | str, |
int | len, | ||
DBusError * | error | ||
) |
Demarshal a D-Bus message from the format described in the D-Bus specification.
Generally, this function is only useful for encapsulating D-Bus messages in a different protocol.
str | the marshalled DBusMessage |
len | the length of str |
error | the location to save errors to |
Definition at line 4668 of file dbus-message.c.
References _dbus_message_loader_get_buffer(), _dbus_message_loader_get_is_corrupted(), _dbus_message_loader_new(), _dbus_message_loader_pop_message(), _dbus_message_loader_queue_messages(), _dbus_message_loader_return_buffer(), _dbus_message_loader_unref(), _dbus_string_append_len(), DBusMessageLoader::corruption_reason, DBUS_ERROR_INVALID_ARGS, dbus_set_error(), and NULL.
int dbus_message_demarshal_bytes_needed | ( | const char * | buf, |
int | len | ||
) |
Returns the number of bytes required to be in the buffer to demarshal a D-Bus message.
Generally, this function is only useful for encapsulating D-Bus messages in a different protocol.
str | data to be marshalled |
len | the length of str |
error | the location to save errors to |
Definition at line 4727 of file dbus-message.c.
References _dbus_assert, _dbus_header_have_message_untrusted(), _dbus_string_free(), _dbus_string_init_const_len(), DBUS_MAXIMUM_MESSAGE_LENGTH, DBUS_MINIMUM_HEADER_SIZE, and DBUS_VALID.
void dbus_message_free_data_slot | ( | dbus_int32_t * | slot_p | ) |
Deallocates a global ID for message data slots.
dbus_message_get_data() and dbus_message_set_data() may no longer be used with this slot. Existing data stored on existing DBusMessage objects will be freed when the message is finalized, but may not be retrieved (and may only be replaced if someone else reallocates the slot). When the refcount on the passed-in slot reaches 0, it is set to -1.
slot_p | address storing the slot to deallocate |
Definition at line 4463 of file dbus-message.c.
References _dbus_data_slot_allocator_free().
void* dbus_message_get_data | ( | DBusMessage * | message, |
dbus_int32_t | slot | ||
) |
Retrieves data previously set with dbus_message_set_data().
The slot must still be allocated (must not have been freed).
message | the message |
slot | the slot to get data from |
Definition at line 4520 of file dbus-message.c.
References _dbus_data_slot_list_get(), NULL, and DBusMessage::slot_list.
void dbus_message_lock | ( | DBusMessage * | message | ) |
Locks a message.
Allows checking that applications don't keep a reference to a message in the outgoing queue and change it underneath us. Messages are locked when they enter the outgoing queue (dbus_connection_send_message()), and the library complains if the message is modified while locked. This function may also called externally, for applications wrapping D-Bus in another protocol.
message | the message to lock. |
Definition at line 383 of file dbus-message.c.
References _dbus_assert, _dbus_header_update_lengths(), _dbus_string_get_length(), DBusMessage::body, dbus_message_get_signature(), DBusMessage::header, DBusMessage::locked, NULL, and TRUE.
Referenced by dbus_message_marshal().
dbus_bool_t dbus_message_marshal | ( | DBusMessage * | msg, |
char ** | marshalled_data_p, | ||
int * | len_p | ||
) |
Turn a DBusMessage into the marshalled form as described in the D-Bus specification.
Generally, this function is only useful for encapsulating D-Bus messages in a different protocol.
msg | the DBusMessage |
marshalled_data_p | the location to save the marshalled form to |
len_p | the location to save the length of the marshalled form to |
Definition at line 4606 of file dbus-message.c.
References _dbus_string_copy(), _dbus_string_free(), _dbus_string_get_length(), _dbus_string_init(), _dbus_string_steal_data(), DBusMessage::body, DBusHeader::data, dbus_message_lock(), FALSE, DBusMessage::header, DBusMessage::locked, NULL, and TRUE.
dbus_bool_t dbus_message_set_data | ( | DBusMessage * | message, |
dbus_int32_t | slot, | ||
void * | data, | ||
DBusFreeFunction | free_data_func | ||
) |
Stores a pointer on a DBusMessage, along with an optional function to be used for freeing the data when the data is set again, or when the message is finalized.
The slot number must have been allocated with dbus_message_allocate_data_slot().
message | the message |
slot | the slot number |
data | the data to store |
free_data_func | finalizer function for the data |
Definition at line 4484 of file dbus-message.c.
References _dbus_data_slot_list_set(), FALSE, NULL, and DBusMessage::slot_list.
void dbus_message_set_serial | ( | DBusMessage * | message, |
dbus_uint32_t | serial | ||
) |
Sets the serial number of a message.
This can only be done once on a message.
DBusConnection will automatically set the serial to an appropriate value when the message is sent; this function is only needed when encapsulating messages in another protocol, or otherwise bypassing DBusConnection.
message | the message |
serial | the serial |
Definition at line 253 of file dbus-message.c.
References _dbus_header_set_serial(), DBusMessage::header, DBusMessage::locked, and NULL.
Referenced by dbus_connection_send_with_reply().
int dbus_message_type_from_string | ( | const char * | type_str | ) |
Utility function to convert a machine-readable (not translated) string into a D-Bus message type.
Definition at line 4548 of file dbus-message.c.
References DBUS_MESSAGE_TYPE_ERROR, DBUS_MESSAGE_TYPE_INVALID, DBUS_MESSAGE_TYPE_METHOD_CALL, DBUS_MESSAGE_TYPE_METHOD_RETURN, and DBUS_MESSAGE_TYPE_SIGNAL.
const char* dbus_message_type_to_string | ( | int | type | ) |
Utility function to convert a D-Bus message type into a machine-readable string (not translated).
Definition at line 4576 of file dbus-message.c.
References DBUS_MESSAGE_TYPE_ERROR, DBUS_MESSAGE_TYPE_METHOD_CALL, DBUS_MESSAGE_TYPE_METHOD_RETURN, and DBUS_MESSAGE_TYPE_SIGNAL.
Referenced by _dbus_connection_message_sent_unlocked(), _dbus_connection_queue_received_message_link(), and dbus_connection_dispatch().