| Current File : //usr/share/doc/dbus/api/group__DBusMessageInternals.html |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>D-Bus: DBusMessage implementation details</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">D-Bus
 <span id="projectnumber">1.8.20</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Generated by Doxygen 1.7.6.1 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> |
<a href="#define-members">Defines</a> |
<a href="#typedef-members">Typedefs</a> |
<a href="#enum-members">Enumerations</a> |
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">DBusMessage implementation details</div> </div>
<div class="ingroups"><a class="el" href="group__DBusInternals.html">D-Bus secret internal implementation details</a></div></div><!--header-->
<div class="contents">
<p><a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a> private implementation details.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation details of <a class="el" href="structDBusMessageLoader.html" title="Implementation details of DBusMessageLoader.">DBusMessageLoader</a>. <a href="structDBusMessageLoader.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusMessage.html">DBusMessage</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Internals of <a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a>. <a href="structDBusMessage.html#details">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structDBusMessageRealIter.html">DBusMessageRealIter</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Internals of <a class="el" href="structDBusMessageIter.html" title="DBusMessageIter struct; contains no public fields.">DBusMessageIter</a>. <a href="structDBusMessageRealIter.html#details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga660989658f3be5e403da430f63afd0b7"></a><!-- doxytag: member="DBusMessageInternals::CHANGED_STAMP_BITS" ref="ga660989658f3be5e403da430f63afd0b7" args="" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga660989658f3be5e403da430f63afd0b7">CHANGED_STAMP_BITS</a>   21</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">How many bits are in the changed_stamp used to validate iterators. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaea37a18258a4c9fd96f965e35cb13bef"></a><!-- doxytag: member="DBusMessageInternals::_dbus_enable_message_cache" ref="gaea37a18258a4c9fd96f965e35cb13bef" args="()" -->
#define </td><td class="memItemRight" valign="bottom"><b>_dbus_enable_message_cache</b>()   (<a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga1dfae386ef0d4d808584abeafc44e8ca">ensure_byte_order</a>(message)   _dbus_message_byteswap (message)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">byte-swap the message if it doesn't match our byte order. <a href="#ga1dfae386ef0d4d808584abeafc44e8ca"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2c5c6aef45dd0b5cc10c800f986a7ce7"></a><!-- doxytag: member="DBusMessageInternals::MAX_MESSAGE_SIZE_TO_CACHE" ref="ga2c5c6aef45dd0b5cc10c800f986a7ce7" args="" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga2c5c6aef45dd0b5cc10c800f986a7ce7">MAX_MESSAGE_SIZE_TO_CACHE</a>   10 * _DBUS_ONE_KILOBYTE</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Avoid caching huge messages. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaeab2038ce58cd314dc1f23103abec5b0"></a><!-- doxytag: member="DBusMessageInternals::MAX_MESSAGE_CACHE_SIZE" ref="gaeab2038ce58cd314dc1f23103abec5b0" args="" -->
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#gaeab2038ce58cd314dc1f23103abec5b0">MAX_MESSAGE_CACHE_SIZE</a>   5</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Avoid caching too many messages. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#gacbe0bfe7a9551ab0489a0ec9aba6e94e">INITIAL_LOADER_DATA_LEN</a>   32</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">The initial buffer size of the message loader. <a href="#gacbe0bfe7a9551ab0489a0ec9aba6e94e"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga84c2bf86d0ab364b236814eafb85e512"></a><!-- doxytag: member="DBusMessageInternals::DBusMessageRealIter" ref="ga84c2bf86d0ab364b236814eafb85e512" args="" -->
typedef struct <a class="el" href="structDBusMessageRealIter.html">DBusMessageRealIter</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga84c2bf86d0ab364b236814eafb85e512">DBusMessageRealIter</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">typedef for internals of message iterator <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#gab6a849ea8db3714da7a161b4f6a6f0fb">DBusMessageLoader</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">The <a class="el" href="structDBusMessageLoader.html" title="Implementation details of DBusMessageLoader.">DBusMessageLoader</a> object encapsulates the process of converting a byte stream into a series of <a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a>. <a href="#gab6a849ea8db3714da7a161b4f6a6f0fb"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom">{ <b>DBUS_MESSAGE_ITER_TYPE_READER</b> = 3,
<b>DBUS_MESSAGE_ITER_TYPE_WRITER</b> = 7
}</td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga1ae02a435d19c3363e11c74b08c43ab2">_dbus_message_iter_get_args_valist</a> (<a class="el" href="structDBusMessageIter.html">DBusMessageIter</a> *iter, <a class="el" href="structDBusError.html">DBusError</a> *error, int first_arg_type, va_list var_args)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Implementation of the varargs arg-getting functions. <a href="#ga1ae02a435d19c3363e11c74b08c43ab2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7e3e6e067d4c4e90cd9e8d30ae09d312"></a><!-- doxytag: member="DBusMessageInternals::_dbus_message_trace_ref" ref="ga7e3e6e067d4c4e90cd9e8d30ae09d312" args="(DBusMessage *message, int old_refcount, int new_refcount, const char *why)" -->
void </td><td class="memItemRight" valign="bottom"><b>_dbus_message_trace_ref</b> (<a class="el" href="structDBusMessage.html">DBusMessage</a> *message, int old_refcount, int new_refcount, const char *why)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga47a86f36abae39fe43916681d3f16330"></a><!-- doxytag: member="DBusMessageInternals::_DBUS_STRING_DEFINE_STATIC" ref="ga47a86f36abae39fe43916681d3f16330" args="(_dbus_empty_signature_str,"")" -->
 </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga47a86f36abae39fe43916681d3f16330">_DBUS_STRING_DEFINE_STATIC</a> (_dbus_empty_signature_str,"")</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">An static string representing an empty signature. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga617811b117ac5eb31151ffb7dabea7a8">_dbus_message_get_network_data</a> (<a class="el" href="structDBusMessage.html">DBusMessage</a> *message, const <a class="el" href="structDBusString.html">DBusString</a> **header, const <a class="el" href="structDBusString.html">DBusString</a> **body)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the data to be sent over the network for this message. <a href="#ga617811b117ac5eb31151ffb7dabea7a8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga577e9d5224c56b9cf2ca2691be2e838c">_dbus_message_get_unix_fds</a> (<a class="el" href="structDBusMessage.html">DBusMessage</a> *message, const int **fds, unsigned *n_fds)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the unix fds to be sent over the network for this message. <a href="#ga577e9d5224c56b9cf2ca2691be2e838c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga3dd30a62c63eb9972cc0c564f2a89c3b">dbus_message_set_serial</a> (<a class="el" href="structDBusMessage.html">DBusMessage</a> *message, <a class="el" href="group__DBusTypes.html#gaf513803b030613a669cc7ef199f90a8b">dbus_uint32_t</a> serial)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the serial number of a message. <a href="#ga3dd30a62c63eb9972cc0c564f2a89c3b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#gafaed2adc00b2ec54b2827ecb778bbe7e">_dbus_message_add_counter_link</a> (<a class="el" href="structDBusMessage.html">DBusMessage</a> *message, <a class="el" href="structDBusList.html">DBusList</a> *link)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">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. <a href="#gafaed2adc00b2ec54b2827ecb778bbe7e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#gad009d79879d654a009c83627726435d8">_dbus_message_add_counter</a> (<a class="el" href="structDBusMessage.html">DBusMessage</a> *message, <a class="el" href="structDBusCounter.html">DBusCounter</a> *counter)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">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. <a href="#gad009d79879d654a009c83627726435d8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#gac84be3fd98e49409c1245a87c7de6f7d">_dbus_message_remove_counter</a> (<a class="el" href="structDBusMessage.html">DBusMessage</a> *message, <a class="el" href="structDBusCounter.html">DBusCounter</a> *counter)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Removes a counter tracking the size/unix fds of this message, and decrements the counter by the size/unix fds of this message. <a href="#gac84be3fd98e49409c1245a87c7de6f7d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga3ecc9c24381af05289161f477ad6a578">dbus_message_lock</a> (<a class="el" href="structDBusMessage.html">DBusMessage</a> *message)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Locks a message. <a href="#ga3ecc9c24381af05289161f477ad6a578"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga66f1c10cf909ba09ed732bc125ff8671">_dbus_message_loader_new</a> (void)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a new message loader. <a href="#ga66f1c10cf909ba09ed732bc125ff8671"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#gad39efb9ff20c7538f12e164a6920edc4">_dbus_message_loader_ref</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Increments the reference count of the loader. <a href="#gad39efb9ff20c7538f12e164a6920edc4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga51299aab1f5e0b2408ab858d3377b20c">_dbus_message_loader_unref</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Decrements the reference count of the loader and finalizes the loader when the count reaches zero. <a href="#ga51299aab1f5e0b2408ab858d3377b20c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#gae77f064b8034189a955d5be982d2fbdb">_dbus_message_loader_get_buffer</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader, <a class="el" href="structDBusString.html">DBusString</a> **buffer)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the buffer to use for reading data from the network. <a href="#gae77f064b8034189a955d5be982d2fbdb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#gaf5cb6398adb9fe39560fe6aef69ebb09">_dbus_message_loader_return_buffer</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader, <a class="el" href="structDBusString.html">DBusString</a> *buffer)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a buffer obtained from <a class="el" href="group__DBusMessageInternals.html#gae77f064b8034189a955d5be982d2fbdb" title="Gets the buffer to use for reading data from the network.">_dbus_message_loader_get_buffer()</a>, indicating to the loader how many bytes of the buffer were filled in. <a href="#gaf5cb6398adb9fe39560fe6aef69ebb09"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga4ed7327f9dee98711ebd7c9e5b74dec0">_dbus_message_loader_get_unix_fds</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader, int **fds, unsigned *max_n_fds)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the buffer to use for reading unix fds from the network. <a href="#ga4ed7327f9dee98711ebd7c9e5b74dec0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga2bf4dd7eda1a539454486e127b75d7c3">_dbus_message_loader_return_unix_fds</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader, int *fds, unsigned n_fds)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a buffer obtained from <a class="el" href="group__DBusMessageInternals.html#ga4ed7327f9dee98711ebd7c9e5b74dec0" title="Gets the buffer to use for reading unix fds from the network.">_dbus_message_loader_get_unix_fds()</a>. <a href="#ga2bf4dd7eda1a539454486e127b75d7c3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#gaf55885371a6d022ec94c79bd7138923f">_dbus_message_loader_queue_messages</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Converts buffered data into messages, if we have enough data. <a href="#gaf55885371a6d022ec94c79bd7138923f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDBusMessage.html">DBusMessage</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga66674354acdd09ca6e11d600b34bdd5f">_dbus_message_loader_peek_message</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Peeks at first loaded message, returns <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> if no messages have been queued. <a href="#ga66674354acdd09ca6e11d600b34bdd5f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDBusMessage.html">DBusMessage</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga9e5e75716d7263d9908d45a60b1b6bdc">_dbus_message_loader_pop_message</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Pops a loaded message (passing ownership of the message to the caller). <a href="#ga9e5e75716d7263d9908d45a60b1b6bdc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDBusList.html">DBusList</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga6ec3c1ad57340f717a47d79092122d04">_dbus_message_loader_pop_message_link</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Pops a loaded message inside a list link (passing ownership of the message and link to the caller). <a href="#ga6ec3c1ad57340f717a47d79092122d04"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga71b290eb470a55217971fcd6851fc40c">_dbus_message_loader_putback_message_link</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader, <a class="el" href="structDBusList.html">DBusList</a> *link)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns a popped message link, used to undo a pop. <a href="#ga71b290eb470a55217971fcd6851fc40c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga38da52ac9344b00df530098bdd9a3842">_dbus_message_loader_get_is_corrupted</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks whether the loader is confused due to bad data. <a href="#ga38da52ac9344b00df530098bdd9a3842"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusMarshal.html#ga0c4521d30d6650a33673a4d7f9cc007c">DBusValidity</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#gafb8c42ed5242274586607812ff6fba10">_dbus_message_loader_get_corruption_reason</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Checks what kind of bad data confused the loader. <a href="#gafb8c42ed5242274586607812ff6fba10"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga031623c6235f98801cab3e53f0a5f757">_dbus_message_loader_set_max_message_size</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader, long size)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the maximum size message we allow. <a href="#ga031623c6235f98801cab3e53f0a5f757"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#gadd76a4b7191465f2dcb8e6b56b717961">_dbus_message_loader_get_max_message_size</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the maximum allowed message size in bytes. <a href="#gadd76a4b7191465f2dcb8e6b56b717961"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#gadd6c0fa721b4340df936363fbde912dc">_dbus_message_loader_set_max_message_unix_fds</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader, long n)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the maximum unix fds per message we allow. <a href="#gadd6c0fa721b4340df936363fbde912dc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">long </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#gaf65867d15c7d8adb91f430c483c180be">_dbus_message_loader_get_max_message_unix_fds</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the maximum allowed number of unix fds per message. <a href="#gaf65867d15c7d8adb91f430c483c180be"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga8e01aad6af940ec4051703f59330da37">_dbus_message_loader_get_pending_fds_count</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Return how many file descriptors are pending in the loader. <a href="#ga8e01aad6af940ec4051703f59330da37"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga658a91d8efc59934016fae6905bfc4bf">_dbus_message_loader_set_pending_fds_function</a> (<a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> *loader, void(*callback)(void *), void *data)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Register a function to be called whenever the number of pending file descriptors in the loader change. <a href="#ga658a91d8efc59934016fae6905bfc4bf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga537b3456202fdd9f305666504bde98fb">dbus_message_allocate_data_slot</a> (<a class="el" href="group__DBusTypes.html#gab18afa60e9b17b6e322735bda3d863d8">dbus_int32_t</a> *slot_p)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Allocates an integer ID to be used for storing application-specific data on any <a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a>. <a href="#ga537b3456202fdd9f305666504bde98fb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#gac7a5ba135e1aec4ad8c7b43752af02e1">dbus_message_free_data_slot</a> (<a class="el" href="group__DBusTypes.html#gab18afa60e9b17b6e322735bda3d863d8">dbus_int32_t</a> *slot_p)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Deallocates a global ID for message data slots. <a href="#gac7a5ba135e1aec4ad8c7b43752af02e1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga69d0bc701f9ca935e6de8a3f3e376c0a">dbus_message_set_data</a> (<a class="el" href="structDBusMessage.html">DBusMessage</a> *message, <a class="el" href="group__DBusTypes.html#gab18afa60e9b17b6e322735bda3d863d8">dbus_int32_t</a> slot, void *data, <a class="el" href="group__DBusMemory.html#ga061bcded226d76c7d7de35beaa165cb5">DBusFreeFunction</a> free_data_func)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Stores a pointer on a <a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a>, along with an optional function to be used for freeing the data when the data is set again, or when the message is finalized. <a href="#ga69d0bc701f9ca935e6de8a3f3e376c0a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga62769bfaf8f1b2edc7922c579bc0649d">dbus_message_get_data</a> (<a class="el" href="structDBusMessage.html">DBusMessage</a> *message, <a class="el" href="group__DBusTypes.html#gab18afa60e9b17b6e322735bda3d863d8">dbus_int32_t</a> slot)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Retrieves data previously set with <a class="el" href="group__DBusMessageInternals.html#ga69d0bc701f9ca935e6de8a3f3e376c0a" title="Stores a pointer on a DBusMessage, along with an optional function to be used for freeing the data wh...">dbus_message_set_data()</a>. <a href="#ga62769bfaf8f1b2edc7922c579bc0649d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga40412bdfc6ba9cf9e167db4c23df0a7e">dbus_message_type_from_string</a> (const char *type_str)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Utility function to convert a machine-readable (not translated) string into a D-Bus message type. <a href="#ga40412bdfc6ba9cf9e167db4c23df0a7e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga75bcb613a291eb7e427f77f2f3635b8f">dbus_message_type_to_string</a> (int type)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Utility function to convert a D-Bus message type into a machine-readable string (not translated). <a href="#ga75bcb613a291eb7e427f77f2f3635b8f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#gad85c737f9e7d03005d6028d6bbae7e87">dbus_message_marshal</a> (<a class="el" href="structDBusMessage.html">DBusMessage</a> *msg, char **marshalled_data_p, int *len_p)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Turn a <a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a> into the marshalled form as described in the D-Bus specification. <a href="#gad85c737f9e7d03005d6028d6bbae7e87"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDBusMessage.html">DBusMessage</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#ga776fe8b5cd935d642875efa1d13a31b3">dbus_message_demarshal</a> (const char *str, int len, <a class="el" href="structDBusError.html">DBusError</a> *error)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Demarshal a D-Bus message from the format described in the D-Bus specification. <a href="#ga776fe8b5cd935d642875efa1d13a31b3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__DBusMessageInternals.html#gab0f8d8a640413e7c9b6c8f154acfbd1a">dbus_message_demarshal_bytes_needed</a> (const char *buf, int len)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the number of bytes required to be in the buffer to demarshal a D-Bus message. <a href="#gab0f8d8a640413e7c9b6c8f154acfbd1a"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<p><a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a> private implementation details. </p>
<p>The guts of <a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a> and its methods. </p>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="ga1dfae386ef0d4d808584abeafc44e8ca"></a><!-- doxytag: member="dbus-message.c::ensure_byte_order" ref="ga1dfae386ef0d4d808584abeafc44e8ca" args="(message)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="group__DBusMessageInternals.html#ga1dfae386ef0d4d808584abeafc44e8ca">ensure_byte_order</a></td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">message</td><td>)</td>
<td>   _dbus_message_byteswap (message)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>byte-swap the message if it doesn't match our byte order. </p>
<p>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. </p>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l00195">195</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
</div>
</div>
<a class="anchor" id="gacbe0bfe7a9551ab0489a0ec9aba6e94e"></a><!-- doxytag: member="dbus-message.c::INITIAL_LOADER_DATA_LEN" ref="gacbe0bfe7a9551ab0489a0ec9aba6e94e" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define <a class="el" href="group__DBusMessageInternals.html#gacbe0bfe7a9551ab0489a0ec9aba6e94e">INITIAL_LOADER_DATA_LEN</a>   32</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>The initial buffer size of the message loader. </p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000039">Todo:</a></b></dt><dd>this should be based on min header size plus some average body size, or something. Or rather, the min header size only, if we want to try to read only the header, store that in a <a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a>, then read only the body and store that, etc., depends on how we optimize <a class="el" href="group__DBusMessageInternals.html#gae77f064b8034189a955d5be982d2fbdb" title="Gets the buffer to use for reading data from the network.">_dbus_message_loader_get_buffer()</a> and what the exact message format is. </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l03854">3854</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l03863">_dbus_message_loader_new()</a>.</p>
</div>
</div>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="gab6a849ea8db3714da7a161b4f6a6f0fb"></a><!-- doxytag: member="dbus-message-internal.h::DBusMessageLoader" ref="gab6a849ea8db3714da7a161b4f6a6f0fb" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>The <a class="el" href="structDBusMessageLoader.html" title="Implementation details of DBusMessageLoader.">DBusMessageLoader</a> object encapsulates the process of converting a byte stream into a series of <a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a>. </p>
<p>It buffers the incoming bytes as efficiently as possible, and generates a queue of messages. <a class="el" href="structDBusMessageLoader.html" title="Implementation details of DBusMessageLoader.">DBusMessageLoader</a> is typically used as part of a <a class="el" href="structDBusTransport.html" title="Object representing a transport such as a socket.">DBusTransport</a> implementation. The <a class="el" href="structDBusTransport.html" title="Object representing a transport such as a socket.">DBusTransport</a> then hands off the loaded messages to a <a class="el" href="structDBusConnection.html" title="Implementation details of DBusConnection.">DBusConnection</a>, making the messages visible to the application.</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000025">Todo:</a></b></dt><dd>write tests for break-loader that a) randomly delete header fields and b) set string fields to zero-length and other funky values.</dd></dl>
<p>Definition at line <a class="el" href="dbus-message-internal_8h_source.html#l00048">48</a> of file <a class="el" href="dbus-message-internal_8h_source.html">dbus-message-internal.h</a>.</p>
</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="gad009d79879d654a009c83627726435d8"></a><!-- doxytag: member="dbus-message.c::_dbus_message_add_counter" ref="gad009d79879d654a009c83627726435d8" args="(DBusMessage *message, DBusCounter *counter)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMessageInternals.html#gad009d79879d654a009c83627726435d8">_dbus_message_add_counter</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessage.html">DBusMessage</a> * </td>
<td class="paramname"><em>message</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusCounter.html">DBusCounter</a> * </td>
<td class="paramname"><em>counter</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>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. </p>
<p>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 <a class="el" href="group__DBusResources.html#gab8c0e970e0c3b4696ba06723639d8239" title="Calls the notify function from _dbus_counter_set_notify(), if that function has been specified and th...">_dbus_counter_notify()</a> on the counter when they are no longer holding locks, or take the same action that would be taken by the notify function.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">message</td><td>the message </td></tr>
<tr><td class="paramname">counter</td><td>the counter </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> if no memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l00329">329</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-resources_8c_source.html#l00116">_dbus_counter_ref()</a>, <a class="el" href="dbus-list_8c_source.html#l00242">_dbus_list_alloc_link()</a>, <a class="el" href="dbus-message_8c_source.html#l00280">_dbus_message_add_counter_link()</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
<p>Referenced by <a class="el" href="dbus-transport_8c_source.html#l01140">_dbus_transport_queue_messages()</a>.</p>
</div>
</div>
<a class="anchor" id="gafaed2adc00b2ec54b2827ecb778bbe7e"></a><!-- doxytag: member="dbus-message.c::_dbus_message_add_counter_link" ref="gafaed2adc00b2ec54b2827ecb778bbe7e" args="(DBusMessage *message, DBusList *link)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMessageInternals.html#gafaed2adc00b2ec54b2827ecb778bbe7e">_dbus_message_add_counter_link</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessage.html">DBusMessage</a> * </td>
<td class="paramname"><em>message</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusList.html">DBusList</a> * </td>
<td class="paramname"><em>link</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>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. </p>
<p>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.</p>
<p>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 <a class="el" href="group__DBusResources.html#gab8c0e970e0c3b4696ba06723639d8239" title="Calls the notify function from _dbus_counter_set_notify(), if that function has been specified and th...">_dbus_counter_notify()</a> on the counter when they are no longer holding locks, or take the same action that would be taken by the notify function.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">message</td><td>the message </td></tr>
<tr><td class="paramname">link</td><td>link with counter as data </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l00280">280</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-resources_8c_source.html#l00167">_dbus_counter_adjust_size()</a>, <a class="el" href="dbus-resources_8c_source.html#l00236">_dbus_counter_adjust_unix_fd()</a>, <a class="el" href="dbus-list_8c_source.html#l00315">_dbus_list_append_link()</a>, <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-message-private_8h_source.html#l00105">DBusMessage::body</a>, <a class="el" href="dbus-message-private_8h_source.html#l00113">DBusMessage::counters</a>, <a class="el" href="dbus-list_8h_source.html#l00038">DBusList::data</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</a>, <a class="el" href="dbus-message-private_8h_source.html#l00103">DBusMessage::header</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="dbus-message-private_8h_source.html#l00114">DBusMessage::size_counter_delta</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l00329">_dbus_message_add_counter()</a>.</p>
</div>
</div>
<a class="anchor" id="ga617811b117ac5eb31151ffb7dabea7a8"></a><!-- doxytag: member="dbus-message.c::_dbus_message_get_network_data" ref="ga617811b117ac5eb31151ffb7dabea7a8" args="(DBusMessage *message, const DBusString **header, const DBusString **body)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMessageInternals.html#ga617811b117ac5eb31151ffb7dabea7a8">_dbus_message_get_network_data</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessage.html">DBusMessage</a> * </td>
<td class="paramname"><em>message</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> ** </td>
<td class="paramname"><em>header</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structDBusString.html">DBusString</a> ** </td>
<td class="paramname"><em>body</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the data to be sent over the network for this message. </p>
<p>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 <a class="el" href="group__DBusMessageInternals.html#ga3ecc9c24381af05289161f477ad6a578" title="Locks a message.">dbus_message_lock()</a>).</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">message</td><td>the message. </td></tr>
<tr><td class="paramname">header</td><td>return location for message header data. </td></tr>
<tr><td class="paramname">body</td><td>return location for message body data. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l00208">208</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-message-private_8h_source.html#l00105">DBusMessage::body</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</a>, <a class="el" href="dbus-message-private_8h_source.html#l00103">DBusMessage::header</a>, and <a class="el" href="dbus-message-private_8h_source.html#l00107">DBusMessage::locked</a>.</p>
</div>
</div>
<a class="anchor" id="ga577e9d5224c56b9cf2ca2691be2e838c"></a><!-- doxytag: member="dbus-message.c::_dbus_message_get_unix_fds" ref="ga577e9d5224c56b9cf2ca2691be2e838c" args="(DBusMessage *message, const int **fds, unsigned *n_fds)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMessageInternals.html#ga577e9d5224c56b9cf2ca2691be2e838c">_dbus_message_get_unix_fds</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessage.html">DBusMessage</a> * </td>
<td class="paramname"><em>message</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int ** </td>
<td class="paramname"><em>fds</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned * </td>
<td class="paramname"><em>n_fds</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the unix fds to be sent over the network for this message. </p>
<p>This function is guaranteed to always return the same data once a message is locked (with <a class="el" href="group__DBusMessageInternals.html#ga3ecc9c24381af05289161f477ad6a578" title="Locks a message.">dbus_message_lock()</a>).</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">message</td><td>the message. </td></tr>
<tr><td class="paramname">fds</td><td>return location of unix fd array </td></tr>
<tr><td class="paramname">n_fds</td><td>return number of entries in array </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l00227">227</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-message-private_8h_source.html#l00107">DBusMessage::locked</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
</div>
</div>
<a class="anchor" id="ga1ae02a435d19c3363e11c74b08c43ab2"></a><!-- doxytag: member="dbus-message-private.h::_dbus_message_iter_get_args_valist" ref="ga1ae02a435d19c3363e11c74b08c43ab2" args="(DBusMessageIter *iter, DBusError *error, int first_arg_type, va_list var_args)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMessageInternals.html#ga1ae02a435d19c3363e11c74b08c43ab2">_dbus_message_iter_get_args_valist</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageIter.html">DBusMessageIter</a> * </td>
<td class="paramname"><em>iter</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusError.html">DBusError</a> * </td>
<td class="paramname"><em>error</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>first_arg_type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">va_list </td>
<td class="paramname"><em>var_args</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Implementation of the varargs arg-getting functions. </p>
<p><a class="el" href="group__DBusMessage.html#gad8953f53ceea7de81cde792e3edd0230" title="Gets arguments from a message given a variable argument list.">dbus_message_get_args()</a> is the place to go for complete documentation.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__DBusMessage.html#gad8953f53ceea7de81cde792e3edd0230" title="Gets arguments from a message given a variable argument list.">dbus_message_get_args</a> </dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">iter</td><td>the message iter </td></tr>
<tr><td class="paramname">error</td><td>error to be filled in </td></tr>
<tr><td class="paramname">first_arg_type</td><td>type of the first argument </td></tr>
<tr><td class="paramname">var_args</td><td>return location for first argument, followed by list of type/location pairs </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> if error was set </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l00796">796</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02959">_dbus_close()</a>, <a class="el" href="dbus-sysdeps-unix_8c_source.html#l02987">_dbus_dup()</a>, <a class="el" href="dbus-internals_8c_source.html#l00527">_dbus_strdup()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00786">_dbus_type_reader_get_current_type()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00821">_dbus_type_reader_get_element_type()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l01054">_dbus_type_reader_next()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00870">_dbus_type_reader_read_basic()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00924">_dbus_type_reader_read_fixed_multi()</a>, <a class="el" href="dbus-marshal-recursive_8c_source.html#l00989">_dbus_type_reader_recurse()</a>, <a class="el" href="dbus-marshal-basic_8c_source.html#l01219">_dbus_type_to_string()</a>, <a class="el" href="dbus-internals_8c_source.html#l00230">_dbus_warn()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00448">DBUS_ERROR_INCONSISTENT_MESSAGE</a>, <a class="el" href="dbus-protocol_8h_source.html#l00386">DBUS_ERROR_INVALID_ARGS</a>, <a class="el" href="dbus-protocol_8h_source.html#l00364">DBUS_ERROR_NOT_SUPPORTED</a>, <a class="el" href="dbus-memory_8c_source.html#l00749">dbus_free_string_array()</a>, <a class="el" href="dbus-message_8c_source.html#l02139">dbus_message_iter_get_arg_type()</a>, <a class="el" href="dbus-memory_8h_source.html#l00059">dbus_new0</a>, <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00120">DBUS_TYPE_ARRAY</a>, <a class="el" href="dbus-protocol_8h_source.html#l00060">DBUS_TYPE_INVALID</a>, <a class="el" href="dbus-signature_8c_source.html#l00318">dbus_type_is_basic()</a>, <a class="el" href="dbus-signature_8c_source.html#l00349">dbus_type_is_fixed()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00114">DBUS_TYPE_UNIX_FD</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-message_8c_source.html#l00128">DBusMessageRealIter::message</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="el" href="dbus-message_8c_source.html#l00135">DBusMessageRealIter::reader</a>, <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>, <a class="el" href="structDBusMessageRealIter.html#ac9c3ce5775bc9f5f0720b65093345ec6">DBusMessageRealIter::u</a>, and <a class="el" href="dbus-types_8h_source.html#l00143">DBusBasicValue::u32</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l02009">dbus_message_get_args_valist()</a>.</p>
</div>
</div>
<a class="anchor" id="gae77f064b8034189a955d5be982d2fbdb"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_get_buffer" ref="gae77f064b8034189a955d5be982d2fbdb" args="(DBusMessageLoader *loader, DBusString **buffer)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMessageInternals.html#gae77f064b8034189a955d5be982d2fbdb">_dbus_message_loader_get_buffer</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusString.html">DBusString</a> ** </td>
<td class="paramname"><em>buffer</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the buffer to use for reading data from the network. </p>
<p>Network data is read directly into an allocated buffer, which is then used in the <a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a>, to avoid as many extra memcpy's as possible. The buffer must always be returned immediately using <a class="el" href="group__DBusMessageInternals.html#gaf5cb6398adb9fe39560fe6aef69ebb09" title="Returns a buffer obtained from _dbus_message_loader_get_buffer(), indicating to the loader how many b...">_dbus_message_loader_return_buffer()</a>, even if no bytes are successfully read.</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000040">Todo:</a></b></dt><dd>this function can be a lot more clever. For example it can probably always return a buffer size to read exactly the body of the next message, thus avoiding any memory wastage or reallocs.</dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000041">Todo:</a></b></dt><dd>we need to enforce a max length on strings in header fields.</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the message loader. </td></tr>
<tr><td class="paramname">buffer</td><td>the buffer </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l03962">3962</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-message-private_8h_source.html#l00075">DBusMessageLoader::buffer_outstanding</a>, <a class="el" href="dbus-message-private_8h_source.html#l00064">DBusMessageLoader::data</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l04783">dbus_message_demarshal()</a>.</p>
</div>
</div>
<a class="anchor" id="gafb8c42ed5242274586607812ff6fba10"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_get_corruption_reason" ref="gafb8c42ed5242274586607812ff6fba10" args="(DBusMessageLoader *loader)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusMarshal.html#ga0c4521d30d6650a33673a4d7f9cc007c">DBusValidity</a> <a class="el" href="group__DBusMessageInternals.html#gafb8c42ed5242274586607812ff6fba10">_dbus_message_loader_get_corruption_reason</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks what kind of bad data confused the loader. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the loader </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>why the loader is hosed, or DBUS_VALID if it isn't. </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04438">4438</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-message-private_8h_source.html#l00073">DBusMessageLoader::corrupted</a>, and <a class="el" href="dbus-message-private_8h_source.html#l00071">DBusMessageLoader::corruption_reason</a>.</p>
</div>
</div>
<a class="anchor" id="ga38da52ac9344b00df530098bdd9a3842"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_get_is_corrupted" ref="ga38da52ac9344b00df530098bdd9a3842" args="(DBusMessageLoader *loader)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMessageInternals.html#ga38da52ac9344b00df530098bdd9a3842">_dbus_message_loader_get_is_corrupted</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks whether the loader is confused due to bad data. </p>
<p>If messages are received that are invalid, the loader gets confused and gives up permanently. This state is called "corrupted."</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the loader </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if the loader is hosed. </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04424">4424</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-message-private_8h_source.html#l00073">DBusMessageLoader::corrupted</a>, and <a class="el" href="dbus-message-private_8h_source.html#l00071">DBusMessageLoader::corruption_reason</a>.</p>
<p>Referenced by <a class="el" href="dbus-transport_8c_source.html#l01140">_dbus_transport_queue_messages()</a>, and <a class="el" href="dbus-message_8c_source.html#l04783">dbus_message_demarshal()</a>.</p>
</div>
</div>
<a class="anchor" id="gadd76a4b7191465f2dcb8e6b56b717961"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_get_max_message_size" ref="gadd76a4b7191465f2dcb8e6b56b717961" args="(DBusMessageLoader *loader)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">long <a class="el" href="group__DBusMessageInternals.html#gadd76a4b7191465f2dcb8e6b56b717961">_dbus_message_loader_get_max_message_size</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the maximum allowed message size in bytes. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the loader </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>max size in bytes </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04472">4472</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-message-private_8h_source.html#l00068">DBusMessageLoader::max_message_size</a>.</p>
<p>Referenced by <a class="el" href="dbus-transport_8c_source.html#l01225">_dbus_transport_get_max_message_size()</a>.</p>
</div>
</div>
<a class="anchor" id="gaf65867d15c7d8adb91f430c483c180be"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_get_max_message_unix_fds" ref="gaf65867d15c7d8adb91f430c483c180be" args="(DBusMessageLoader *loader)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">long <a class="el" href="group__DBusMessageInternals.html#gaf65867d15c7d8adb91f430c483c180be">_dbus_message_loader_get_max_message_unix_fds</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the maximum allowed number of unix fds per message. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the loader </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>max unix fds </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04503">4503</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-message-private_8h_source.html#l00069">DBusMessageLoader::max_message_unix_fds</a>.</p>
<p>Referenced by <a class="el" href="dbus-transport_8c_source.html#l01237">_dbus_transport_get_max_message_unix_fds()</a>.</p>
</div>
</div>
<a class="anchor" id="ga8e01aad6af940ec4051703f59330da37"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_get_pending_fds_count" ref="ga8e01aad6af940ec4051703f59330da37" args="(DBusMessageLoader *loader)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusMessageInternals.html#ga8e01aad6af940ec4051703f59330da37">_dbus_message_loader_get_pending_fds_count</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Return how many file descriptors are pending in the loader. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the loader </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04514">4514</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>Referenced by <a class="el" href="dbus-transport_8c_source.html#l01521">_dbus_transport_get_pending_fds_count()</a>.</p>
</div>
</div>
<a class="anchor" id="ga4ed7327f9dee98711ebd7c9e5b74dec0"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_get_unix_fds" ref="ga4ed7327f9dee98711ebd7c9e5b74dec0" args="(DBusMessageLoader *loader, int **fds, unsigned *max_n_fds)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMessageInternals.html#ga4ed7327f9dee98711ebd7c9e5b74dec0">_dbus_message_loader_get_unix_fds</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int ** </td>
<td class="paramname"><em>fds</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned * </td>
<td class="paramname"><em>max_n_fds</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the buffer to use for reading unix fds from the network. </p>
<p>This works similar to <a class="el" href="group__DBusMessageInternals.html#gae77f064b8034189a955d5be982d2fbdb" title="Gets the buffer to use for reading data from the network.">_dbus_message_loader_get_buffer()</a></p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the message loader. </td></tr>
<tr><td class="paramname">fds</td><td>the array to read fds into </td></tr>
<tr><td class="paramname">max_n_fds</td><td>how many fds to read at most </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>TRUE on success, FALSE on OOM </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04002">4002</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-memory_8c_source.html#l00601">dbus_realloc()</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-message-private_8h_source.html#l00069">DBusMessageLoader::max_message_unix_fds</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
</div>
</div>
<a class="anchor" id="ga66f1c10cf909ba09ed732bc125ff8671"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_new" ref="ga66f1c10cf909ba09ed732bc125ff8671" args="(void)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a>* <a class="el" href="group__DBusMessageInternals.html#ga66f1c10cf909ba09ed732bc125ff8671">_dbus_message_loader_new</a> </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a new message loader. </p>
<p>Returns <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> if memory can't be allocated.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>new loader, or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a>. </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l03863">3863</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l00175">_dbus_string_init()</a>, <a class="el" href="dbus-string_8c_source.html#l00785">_dbus_string_set_length()</a>, <a class="el" href="dbus-message-private_8h_source.html#l00073">DBusMessageLoader::corrupted</a>, <a class="el" href="dbus-message-private_8h_source.html#l00071">DBusMessageLoader::corruption_reason</a>, <a class="el" href="dbus-message-private_8h_source.html#l00064">DBusMessageLoader::data</a>, <a class="el" href="dbus-memory_8c_source.html#l00701">dbus_free()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00210">DBUS_MAXIMUM_MESSAGE_LENGTH</a>, <a class="el" href="dbus-memory_8h_source.html#l00059">dbus_new0</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-message_8c_source.html#l03854">INITIAL_LOADER_DATA_LEN</a>, <a class="el" href="dbus-message-private_8h_source.html#l00068">DBusMessageLoader::max_message_size</a>, <a class="el" href="dbus-message-private_8h_source.html#l00069">DBusMessageLoader::max_message_unix_fds</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="dbus-message-private_8h_source.html#l00062">DBusMessageLoader::refcount</a>.</p>
<p>Referenced by <a class="el" href="dbus-transport_8c_source.html#l00102">_dbus_transport_init_base()</a>, and <a class="el" href="dbus-message_8c_source.html#l04783">dbus_message_demarshal()</a>.</p>
</div>
</div>
<a class="anchor" id="ga66674354acdd09ca6e11d600b34bdd5f"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_peek_message" ref="ga66674354acdd09ca6e11d600b34bdd5f" args="(DBusMessageLoader *loader)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structDBusMessage.html">DBusMessage</a>* <a class="el" href="group__DBusMessageInternals.html#ga66674354acdd09ca6e11d600b34bdd5f">_dbus_message_loader_peek_message</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Peeks at first loaded message, returns <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> if no messages have been queued. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the loader. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the next message, or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> if none. </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04365">4365</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-list_8h_source.html#l00038">DBusList::data</a>, <a class="el" href="dbus-message-private_8h_source.html#l00066">DBusMessageLoader::messages</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-transport_8c_source.html#l01101">_dbus_transport_get_dispatch_status()</a>.</p>
</div>
</div>
<a class="anchor" id="ga9e5e75716d7263d9908d45a60b1b6bdc"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_pop_message" ref="ga9e5e75716d7263d9908d45a60b1b6bdc" args="(DBusMessageLoader *loader)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structDBusMessage.html">DBusMessage</a>* <a class="el" href="group__DBusMessageInternals.html#ga9e5e75716d7263d9908d45a60b1b6bdc">_dbus_message_loader_pop_message</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Pops a loaded message (passing ownership of the message to the caller). </p>
<p>Returns <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> if no messages have been queued.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the loader. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the next message, or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> if none. </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04382">4382</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-list_8c_source.html#l00649">_dbus_list_pop_first()</a>, and <a class="el" href="dbus-message-private_8h_source.html#l00066">DBusMessageLoader::messages</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l04783">dbus_message_demarshal()</a>.</p>
</div>
</div>
<a class="anchor" id="ga6ec3c1ad57340f717a47d79092122d04"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_pop_message_link" ref="ga6ec3c1ad57340f717a47d79092122d04" args="(DBusMessageLoader *loader)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structDBusList.html">DBusList</a>* <a class="el" href="group__DBusMessageInternals.html#ga6ec3c1ad57340f717a47d79092122d04">_dbus_message_loader_pop_message_link</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Pops a loaded message inside a list link (passing ownership of the message and link to the caller). </p>
<p>Returns <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> if no messages have been loaded.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the loader. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the next message link, or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> if none. </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04396">4396</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-list_8c_source.html#l00628">_dbus_list_pop_first_link()</a>, and <a class="el" href="dbus-message-private_8h_source.html#l00066">DBusMessageLoader::messages</a>.</p>
<p>Referenced by <a class="el" href="dbus-transport_8c_source.html#l01140">_dbus_transport_queue_messages()</a>.</p>
</div>
</div>
<a class="anchor" id="ga71b290eb470a55217971fcd6851fc40c"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_putback_message_link" ref="ga71b290eb470a55217971fcd6851fc40c" args="(DBusMessageLoader *loader, DBusList *link)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMessageInternals.html#ga71b290eb470a55217971fcd6851fc40c">_dbus_message_loader_putback_message_link</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusList.html">DBusList</a> * </td>
<td class="paramname"><em>link</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Returns a popped message link, used to undo a pop. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the loader </td></tr>
<tr><td class="paramname">link</td><td>the link with a message in it </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04408">4408</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-list_8c_source.html#l00333">_dbus_list_prepend_link()</a>, and <a class="el" href="dbus-message-private_8h_source.html#l00066">DBusMessageLoader::messages</a>.</p>
<p>Referenced by <a class="el" href="dbus-transport_8c_source.html#l01140">_dbus_transport_queue_messages()</a>.</p>
</div>
</div>
<a class="anchor" id="gaf55885371a6d022ec94c79bd7138923f"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_queue_messages" ref="gaf55885371a6d022ec94c79bd7138923f" args="(DBusMessageLoader *loader)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMessageInternals.html#gaf55885371a6d022ec94c79bd7138923f">_dbus_message_loader_queue_messages</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Converts buffered data into messages, if we have enough data. </p>
<p>If we don't have enough data, does nothing.</p>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000042">Todo:</a></b></dt><dd>we need to check that the proper named header fields exist for each message type.</dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000043">Todo:</a></b></dt><dd>If a message has unknown type, we should probably eat it right here rather than passing it out to applications. However it's not an error to see messages of unknown type.</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the loader. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if we had enough memory to finish. </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04302">4302</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-header_8c_source.html#l00673">_dbus_header_have_message_untrusted()</a>, <a class="el" href="dbus-list_8c_source.html#l00472">_dbus_list_find_last()</a>, <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-message-private_8h_source.html#l00073">DBusMessageLoader::corrupted</a>, <a class="el" href="dbus-message-private_8h_source.html#l00071">DBusMessageLoader::corruption_reason</a>, <a class="el" href="dbus-message-private_8h_source.html#l00064">DBusMessageLoader::data</a>, <a class="el" href="dbus-message_8c_source.html#l01690">dbus_message_unref()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00341">DBUS_MINIMUM_HEADER_SIZE</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-message-private_8h_source.html#l00068">DBusMessageLoader::max_message_size</a>, <a class="el" href="dbus-message-private_8h_source.html#l00066">DBusMessageLoader::messages</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
<p>Referenced by <a class="el" href="dbus-transport_8c_source.html#l01101">_dbus_transport_get_dispatch_status()</a>, and <a class="el" href="dbus-message_8c_source.html#l04783">dbus_message_demarshal()</a>.</p>
</div>
</div>
<a class="anchor" id="gad39efb9ff20c7538f12e164a6920edc4"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_ref" ref="gad39efb9ff20c7538f12e164a6920edc4" args="(DBusMessageLoader *loader)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a>* <a class="el" href="group__DBusMessageInternals.html#gad39efb9ff20c7538f12e164a6920edc4">_dbus_message_loader_ref</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Increments the reference count of the loader. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the loader. </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the loader </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l03911">3911</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-message-private_8h_source.html#l00062">DBusMessageLoader::refcount</a>.</p>
</div>
</div>
<a class="anchor" id="gaf5cb6398adb9fe39560fe6aef69ebb09"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_return_buffer" ref="gaf5cb6398adb9fe39560fe6aef69ebb09" args="(DBusMessageLoader *loader, DBusString *buffer)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMessageInternals.html#gaf5cb6398adb9fe39560fe6aef69ebb09">_dbus_message_loader_return_buffer</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusString.html">DBusString</a> * </td>
<td class="paramname"><em>buffer</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Returns a buffer obtained from <a class="el" href="group__DBusMessageInternals.html#gae77f064b8034189a955d5be982d2fbdb" title="Gets the buffer to use for reading data from the network.">_dbus_message_loader_get_buffer()</a>, indicating to the loader how many bytes of the buffer were filled in. </p>
<p>This function must always be called, even if no bytes were successfully read.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the loader. </td></tr>
<tr><td class="paramname">buffer</td><td>the buffer. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l03982">3982</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-message-private_8h_source.html#l00075">DBusMessageLoader::buffer_outstanding</a>, <a class="el" href="dbus-message-private_8h_source.html#l00064">DBusMessageLoader::data</a>, and <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l04783">dbus_message_demarshal()</a>.</p>
</div>
</div>
<a class="anchor" id="ga2bf4dd7eda1a539454486e127b75d7c3"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_return_unix_fds" ref="ga2bf4dd7eda1a539454486e127b75d7c3" args="(DBusMessageLoader *loader, int *fds, unsigned n_fds)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMessageInternals.html#ga2bf4dd7eda1a539454486e127b75d7c3">_dbus_message_loader_return_unix_fds</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>fds</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned </td>
<td class="paramname"><em>n_fds</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Returns a buffer obtained from <a class="el" href="group__DBusMessageInternals.html#ga4ed7327f9dee98711ebd7c9e5b74dec0" title="Gets the buffer to use for reading unix fds from the network.">_dbus_message_loader_get_unix_fds()</a>. </p>
<p>This works similar to <a class="el" href="group__DBusMessageInternals.html#gaf5cb6398adb9fe39560fe6aef69ebb09" title="Returns a buffer obtained from _dbus_message_loader_get_buffer(), indicating to the loader how many b...">_dbus_message_loader_return_buffer()</a></p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the message loader. </td></tr>
<tr><td class="paramname">fds</td><td>the array fds were read into </td></tr>
<tr><td class="paramname">n_fds</td><td>how many fds were read </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04051">4051</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>.</p>
</div>
</div>
<a class="anchor" id="ga031623c6235f98801cab3e53f0a5f757"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_set_max_message_size" ref="ga031623c6235f98801cab3e53f0a5f757" args="(DBusMessageLoader *loader, long size)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMessageInternals.html#ga031623c6235f98801cab3e53f0a5f757">_dbus_message_loader_set_max_message_size</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long </td>
<td class="paramname"><em>size</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Sets the maximum size message we allow. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the loader </td></tr>
<tr><td class="paramname">size</td><td>the max message size in bytes </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04453">4453</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-protocol_8h_source.html#l00210">DBUS_MAXIMUM_MESSAGE_LENGTH</a>, and <a class="el" href="dbus-message-private_8h_source.html#l00068">DBusMessageLoader::max_message_size</a>.</p>
<p>Referenced by <a class="el" href="dbus-transport_8c_source.html#l01199">_dbus_transport_set_max_message_size()</a>.</p>
</div>
</div>
<a class="anchor" id="gadd6c0fa721b4340df936363fbde912dc"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_set_max_message_unix_fds" ref="gadd6c0fa721b4340df936363fbde912dc" args="(DBusMessageLoader *loader, long n)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMessageInternals.html#gadd6c0fa721b4340df936363fbde912dc">_dbus_message_loader_set_max_message_unix_fds</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long </td>
<td class="paramname"><em>n</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Sets the maximum unix fds per message we allow. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the loader </td></tr>
<tr><td class="paramname">n</td><td>the max number of unix fds in a message </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04484">4484</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-protocol_8h_source.html#l00218">DBUS_MAXIMUM_MESSAGE_UNIX_FDS</a>, and <a class="el" href="dbus-message-private_8h_source.html#l00069">DBusMessageLoader::max_message_unix_fds</a>.</p>
<p>Referenced by <a class="el" href="dbus-transport_8c_source.html#l01212">_dbus_transport_set_max_message_unix_fds()</a>.</p>
</div>
</div>
<a class="anchor" id="ga658a91d8efc59934016fae6905bfc4bf"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_set_pending_fds_function" ref="ga658a91d8efc59934016fae6905bfc4bf" args="(DBusMessageLoader *loader, void(*callback)(void *), void *data)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMessageInternals.html#ga658a91d8efc59934016fae6905bfc4bf">_dbus_message_loader_set_pending_fds_function</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void(*)(void *) </td>
<td class="paramname"><em>callback</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>data</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Register a function to be called whenever the number of pending file descriptors in the loader change. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the loader </td></tr>
<tr><td class="paramname">callback</td><td>the callback </td></tr>
<tr><td class="paramname">data</td><td>the data for the callback </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04532">4532</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>Referenced by <a class="el" href="dbus-transport_8c_source.html#l01534">_dbus_transport_set_pending_fds_function()</a>.</p>
</div>
</div>
<a class="anchor" id="ga51299aab1f5e0b2408ab858d3377b20c"></a><!-- doxytag: member="dbus-message.c::_dbus_message_loader_unref" ref="ga51299aab1f5e0b2408ab858d3377b20c" args="(DBusMessageLoader *loader)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMessageInternals.html#ga51299aab1f5e0b2408ab858d3377b20c">_dbus_message_loader_unref</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessageLoader.html">DBusMessageLoader</a> * </td>
<td class="paramname"><em>loader</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Decrements the reference count of the loader and finalizes the loader when the count reaches zero. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">loader</td><td>the loader. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l03925">3925</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-list_8c_source.html#l00542">_dbus_list_clear()</a>, <a class="el" href="dbus-list_8c_source.html#l00759">_dbus_list_foreach()</a>, <a class="el" href="dbus-string_8c_source.html#l00242">_dbus_string_free()</a>, <a class="el" href="dbus-message-private_8h_source.html#l00064">DBusMessageLoader::data</a>, <a class="el" href="dbus-memory_8c_source.html#l00701">dbus_free()</a>, <a class="el" href="dbus-message_8c_source.html#l01690">dbus_message_unref()</a>, <a class="el" href="dbus-message-private_8h_source.html#l00066">DBusMessageLoader::messages</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="dbus-message-private_8h_source.html#l00062">DBusMessageLoader::refcount</a>.</p>
<p>Referenced by <a class="el" href="dbus-transport_8c_source.html#l00216">_dbus_transport_finalize_base()</a>, <a class="el" href="dbus-transport_8c_source.html#l00102">_dbus_transport_init_base()</a>, and <a class="el" href="dbus-message_8c_source.html#l04783">dbus_message_demarshal()</a>.</p>
</div>
</div>
<a class="anchor" id="gac84be3fd98e49409c1245a87c7de6f7d"></a><!-- doxytag: member="dbus-message.c::_dbus_message_remove_counter" ref="gac84be3fd98e49409c1245a87c7de6f7d" args="(DBusMessage *message, DBusCounter *counter)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMessageInternals.html#gac84be3fd98e49409c1245a87c7de6f7d">_dbus_message_remove_counter</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessage.html">DBusMessage</a> * </td>
<td class="paramname"><em>message</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusCounter.html">DBusCounter</a> * </td>
<td class="paramname"><em>counter</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Removes a counter tracking the size/unix fds of this message, and decrements the counter by the size/unix fds of this message. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">message</td><td>the message </td></tr>
<tr><td class="paramname">counter</td><td>the counter </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l00352">352</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-resources_8c_source.html#l00167">_dbus_counter_adjust_size()</a>, <a class="el" href="dbus-resources_8c_source.html#l00236">_dbus_counter_adjust_unix_fd()</a>, <a class="el" href="dbus-resources_8c_source.html#l00207">_dbus_counter_notify()</a>, <a class="el" href="dbus-resources_8c_source.html#l00136">_dbus_counter_unref()</a>, <a class="el" href="dbus-list_8c_source.html#l00472">_dbus_list_find_last()</a>, <a class="el" href="dbus-list_8c_source.html#l00527">_dbus_list_remove_link()</a>, <a class="el" href="dbus-message-private_8h_source.html#l00113">DBusMessage::counters</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="dbus-message-private_8h_source.html#l00114">DBusMessage::size_counter_delta</a>.</p>
<p>Referenced by <a class="el" href="dbus-connection_8c_source.html#l00625">_dbus_connection_message_sent_unlocked()</a>.</p>
</div>
</div>
<a class="anchor" id="ga537b3456202fdd9f305666504bde98fb"></a><!-- doxytag: member="dbus-message.c::dbus_message_allocate_data_slot" ref="ga537b3456202fdd9f305666504bde98fb" args="(dbus_int32_t *slot_p)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMessage.html#gafdde8db1152649d37c9f7e316ca59e56">dbus_message_allocate_data_slot</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__DBusTypes.html#gab18afa60e9b17b6e322735bda3d863d8">dbus_int32_t</a> * </td>
<td class="paramname"><em>slot_p</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Allocates an integer ID to be used for storing application-specific data on any <a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a>. </p>
<p>The allocated ID may then be used with <a class="el" href="group__DBusMessageInternals.html#ga69d0bc701f9ca935e6de8a3f3e376c0a" title="Stores a pointer on a DBusMessage, along with an optional function to be used for freeing the data wh...">dbus_message_set_data()</a> and <a class="el" href="group__DBusMessageInternals.html#ga62769bfaf8f1b2edc7922c579bc0649d" title="Retrieves data previously set with dbus_message_set_data().">dbus_message_get_data()</a>. 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.</p>
<p>The allocated slot is global, i.e. all <a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a> objects will have a slot with the given integer ID reserved.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">slot_p</td><td>address of a global variable storing the slot </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> on failure (no memory) </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04560">4560</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-dataslot_8c_source.html#l00069">_dbus_data_slot_allocator_alloc()</a>.</p>
</div>
</div>
<a class="anchor" id="ga776fe8b5cd935d642875efa1d13a31b3"></a><!-- doxytag: member="dbus-message.c::dbus_message_demarshal" ref="ga776fe8b5cd935d642875efa1d13a31b3" args="(const char *str, int len, DBusError *error)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structDBusMessage.html">DBusMessage</a>* <a class="el" href="group__DBusMessage.html#ga54242692a860bc712bda120ccee3535f">dbus_message_demarshal</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>str</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structDBusError.html">DBusError</a> * </td>
<td class="paramname"><em>error</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Demarshal a D-Bus message from the format described in the D-Bus specification. </p>
<p>Generally, this function is only useful for encapsulating D-Bus messages in a different protocol.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>the marshalled <a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a> </td></tr>
<tr><td class="paramname">len</td><td>the length of str </td></tr>
<tr><td class="paramname">error</td><td>the location to save errors to </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> if there was an error </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04783">4783</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-message_8c_source.html#l03962">_dbus_message_loader_get_buffer()</a>, <a class="el" href="dbus-message_8c_source.html#l04424">_dbus_message_loader_get_is_corrupted()</a>, <a class="el" href="dbus-message_8c_source.html#l03863">_dbus_message_loader_new()</a>, <a class="el" href="dbus-message_8c_source.html#l04382">_dbus_message_loader_pop_message()</a>, <a class="el" href="dbus-message_8c_source.html#l04302">_dbus_message_loader_queue_messages()</a>, <a class="el" href="dbus-message_8c_source.html#l03982">_dbus_message_loader_return_buffer()</a>, <a class="el" href="dbus-message_8c_source.html#l03925">_dbus_message_loader_unref()</a>, <a class="el" href="dbus-string_8c_source.html#l01119">_dbus_string_append_len()</a>, <a class="el" href="dbus-message-private_8h_source.html#l00071">DBusMessageLoader::corruption_reason</a>, <a class="el" href="dbus-protocol_8h_source.html#l00386">DBUS_ERROR_INVALID_ARGS</a>, <a class="el" href="dbus-errors_8c_source.html#l00354">dbus_set_error()</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
</div>
</div>
<a class="anchor" id="gab0f8d8a640413e7c9b6c8f154acfbd1a"></a><!-- doxytag: member="dbus-message.c::dbus_message_demarshal_bytes_needed" ref="gab0f8d8a640413e7c9b6c8f154acfbd1a" args="(const char *buf, int len)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusMessage.html#ga67b26fd2c8e3305f3a467a5f3e36b24a">dbus_message_demarshal_bytes_needed</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>buf</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Returns the number of bytes required to be in the buffer to demarshal a D-Bus message. </p>
<p>Generally, this function is only useful for encapsulating D-Bus messages in a different protocol.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">buf</td><td>data to be marshalled </td></tr>
<tr><td class="paramname">len</td><td>the length of <code>buf</code> </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>-1 if there was no valid data to be demarshalled, 0 if there wasn't enough data to determine how much should be demarshalled. Otherwise returns the number of bytes to be demarshalled </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04844">4844</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-header_8c_source.html#l00673">_dbus_header_have_message_untrusted()</a>, <a class="el" href="dbus-string_8c_source.html#l00242">_dbus_string_free()</a>, <a class="el" href="dbus-string_8c_source.html#l00210">_dbus_string_init_const_len()</a>, <a class="el" href="dbus-protocol_8h_source.html#l00210">DBUS_MAXIMUM_MESSAGE_LENGTH</a>, and <a class="el" href="dbus-protocol_8h_source.html#l00341">DBUS_MINIMUM_HEADER_SIZE</a>.</p>
</div>
</div>
<a class="anchor" id="gac7a5ba135e1aec4ad8c7b43752af02e1"></a><!-- doxytag: member="dbus-message.c::dbus_message_free_data_slot" ref="gac7a5ba135e1aec4ad8c7b43752af02e1" args="(dbus_int32_t *slot_p)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMessage.html#ga23227ce2bd5c52d05581d3fe1232ae66">dbus_message_free_data_slot</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__DBusTypes.html#gab18afa60e9b17b6e322735bda3d863d8">dbus_int32_t</a> * </td>
<td class="paramname"><em>slot_p</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Deallocates a global ID for message data slots. </p>
<p><a class="el" href="group__DBusMessageInternals.html#ga62769bfaf8f1b2edc7922c579bc0649d" title="Retrieves data previously set with dbus_message_set_data().">dbus_message_get_data()</a> and <a class="el" href="group__DBusMessageInternals.html#ga69d0bc701f9ca935e6de8a3f3e376c0a" title="Stores a pointer on a DBusMessage, along with an optional function to be used for freeing the data wh...">dbus_message_set_data()</a> may no longer be used with this slot. Existing data stored on existing <a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a> 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.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">slot_p</td><td>address storing the slot to deallocate </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04578">4578</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-dataslot_8c_source.html#l00154">_dbus_data_slot_allocator_free()</a>.</p>
</div>
</div>
<a class="anchor" id="ga62769bfaf8f1b2edc7922c579bc0649d"></a><!-- doxytag: member="dbus-message.c::dbus_message_get_data" ref="ga62769bfaf8f1b2edc7922c579bc0649d" args="(DBusMessage *message, dbus_int32_t slot)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* <a class="el" href="group__DBusMessage.html#gabbde522fe2321618ee39df1a028a2ec6">dbus_message_get_data</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessage.html">DBusMessage</a> * </td>
<td class="paramname"><em>message</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusTypes.html#gab18afa60e9b17b6e322735bda3d863d8">dbus_int32_t</a> </td>
<td class="paramname"><em>slot</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Retrieves data previously set with <a class="el" href="group__DBusMessageInternals.html#ga69d0bc701f9ca935e6de8a3f3e376c0a" title="Stores a pointer on a DBusMessage, along with an optional function to be used for freeing the data wh...">dbus_message_set_data()</a>. </p>
<p>The slot must still be allocated (must not have been freed).</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">message</td><td>the message </td></tr>
<tr><td class="paramname">slot</td><td>the slot to get data from </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the data, or <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4" title="A null pointer, defined appropriately for C or C++.">NULL</a> if not found </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04635">4635</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-dataslot_8c_source.html#l00285">_dbus_data_slot_list_get()</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="dbus-message-private_8h_source.html#l00118">DBusMessage::slot_list</a>.</p>
</div>
</div>
<a class="anchor" id="ga3ecc9c24381af05289161f477ad6a578"></a><!-- doxytag: member="dbus-message.c::dbus_message_lock" ref="ga3ecc9c24381af05289161f477ad6a578" args="(DBusMessage *message)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMessage.html#gad3d6b8ec4745ec19f57cae07621f3a47">dbus_message_lock</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessage.html">DBusMessage</a> * </td>
<td class="paramname"><em>message</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Locks a message. </p>
<p>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.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">message</td><td>the message to lock. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l00384">384</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-header_8c_source.html#l01196">_dbus_header_update_lengths()</a>, <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-message-private_8h_source.html#l00105">DBusMessage::body</a>, <a class="el" href="dbus-message_8c_source.html#l03543">dbus_message_get_signature()</a>, <a class="el" href="dbus-message-private_8h_source.html#l00103">DBusMessage::header</a>, <a class="el" href="dbus-message-private_8h_source.html#l00107">DBusMessage::locked</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
<p>Referenced by <a class="el" href="dbus-message_8c_source.html#l04721">dbus_message_marshal()</a>.</p>
</div>
</div>
<a class="anchor" id="gad85c737f9e7d03005d6028d6bbae7e87"></a><!-- doxytag: member="dbus-message.c::dbus_message_marshal" ref="gad85c737f9e7d03005d6028d6bbae7e87" args="(DBusMessage *msg, char **marshalled_data_p, int *len_p)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMessage.html#ga3f90a918ada328450fcfe9ac403b8807">dbus_message_marshal</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessage.html">DBusMessage</a> * </td>
<td class="paramname"><em>msg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char ** </td>
<td class="paramname"><em>marshalled_data_p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>len_p</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Turn a <a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a> into the marshalled form as described in the D-Bus specification. </p>
<p>Generally, this function is only useful for encapsulating D-Bus messages in a different protocol.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">msg</td><td>the <a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a> </td></tr>
<tr><td class="paramname">marshalled_data_p</td><td>the location to save the marshalled form to </td></tr>
<tr><td class="paramname">len_p</td><td>the location to save the length of the marshalled form to </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1" title="Expands to "0".">FALSE</a> if there was not enough memory </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04721">4721</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-string_8c_source.html#l01265">_dbus_string_copy()</a>, <a class="el" href="dbus-string_8c_source.html#l00242">_dbus_string_free()</a>, <a class="el" href="dbus-string_8c_source.html#l00722">_dbus_string_get_length()</a>, <a class="el" href="dbus-string_8c_source.html#l00175">_dbus_string_init()</a>, <a class="el" href="dbus-string_8c_source.html#l00624">_dbus_string_steal_data()</a>, <a class="el" href="dbus-message-private_8h_source.html#l00105">DBusMessage::body</a>, <a class="el" href="dbus-marshal-header_8h_source.html#l00049">DBusHeader::data</a>, <a class="el" href="dbus-message_8c_source.html#l00384">dbus_message_lock()</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="dbus-message-private_8h_source.html#l00103">DBusMessage::header</a>, <a class="el" href="dbus-message-private_8h_source.html#l00107">DBusMessage::locked</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>.</p>
</div>
</div>
<a class="anchor" id="ga69d0bc701f9ca935e6de8a3f3e376c0a"></a><!-- doxytag: member="dbus-message.c::dbus_message_set_data" ref="ga69d0bc701f9ca935e6de8a3f3e376c0a" args="(DBusMessage *message, dbus_int32_t slot, void *data, DBusFreeFunction free_data_func)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group__DBusTypes.html#ga39c9cb0f3a2a8ad6f55cc4855d035349">dbus_bool_t</a> <a class="el" href="group__DBusMessage.html#ga29331c4e9c2d53cbe60382056f6495a1">dbus_message_set_data</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessage.html">DBusMessage</a> * </td>
<td class="paramname"><em>message</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusTypes.html#gab18afa60e9b17b6e322735bda3d863d8">dbus_int32_t</a> </td>
<td class="paramname"><em>slot</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusMemory.html#ga061bcded226d76c7d7de35beaa165cb5">DBusFreeFunction</a> </td>
<td class="paramname"><em>free_data_func</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Stores a pointer on a <a class="el" href="structDBusMessage.html" title="Internals of DBusMessage.">DBusMessage</a>, along with an optional function to be used for freeing the data when the data is set again, or when the message is finalized. </p>
<p>The slot number must have been allocated with <a class="el" href="group__DBusMessageInternals.html#ga537b3456202fdd9f305666504bde98fb" title="Allocates an integer ID to be used for storing application-specific data on any DBusMessage.">dbus_message_allocate_data_slot()</a>.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">message</td><td>the message </td></tr>
<tr><td class="paramname">slot</td><td>the slot number </td></tr>
<tr><td class="paramname">data</td><td>the data to store </td></tr>
<tr><td class="paramname">free_data_func</td><td>finalizer function for the data </td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><a class="el" href="group__DBusMacros.html#gaa8cecfc5c5c054d2875c03e77b7be15d" title="Expands to "1".">TRUE</a> if there was enough memory to store the data </dd></dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04599">4599</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-dataslot_8c_source.html#l00221">_dbus_data_slot_list_set()</a>, <a class="el" href="group__DBusMacros.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, and <a class="el" href="dbus-message-private_8h_source.html#l00118">DBusMessage::slot_list</a>.</p>
</div>
</div>
<a class="anchor" id="ga3dd30a62c63eb9972cc0c564f2a89c3b"></a><!-- doxytag: member="dbus-message.c::dbus_message_set_serial" ref="ga3dd30a62c63eb9972cc0c564f2a89c3b" args="(DBusMessage *message, dbus_uint32_t serial)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="group__DBusMessage.html#gaa35c17742d8fe091aa039cbd29961c52">dbus_message_set_serial</a> </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structDBusMessage.html">DBusMessage</a> * </td>
<td class="paramname"><em>message</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__DBusTypes.html#gaf513803b030613a669cc7ef199f90a8b">dbus_uint32_t</a> </td>
<td class="paramname"><em>serial</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Sets the serial number of a message. </p>
<p>This can only be done once on a message.</p>
<p><a class="el" href="structDBusConnection.html" title="Implementation details of DBusConnection.">DBusConnection</a> 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 <a class="el" href="structDBusConnection.html" title="Implementation details of DBusConnection.">DBusConnection</a>.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramname">message</td><td>the message </td></tr>
<tr><td class="paramname">serial</td><td>the serial </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l00254">254</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-marshal-header_8c_source.html#l00404">_dbus_header_set_serial()</a>, <a class="el" href="dbus-message-private_8h_source.html#l00103">DBusMessage::header</a>, <a class="el" href="dbus-message-private_8h_source.html#l00107">DBusMessage::locked</a>, and <a class="el" href="group__DBusMacros.html#ga070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p>
<p>Referenced by <a class="el" href="dbus-connection_8c_source.html#l03399">dbus_connection_send_with_reply()</a>.</p>
</div>
</div>
<a class="anchor" id="ga40412bdfc6ba9cf9e167db4c23df0a7e"></a><!-- doxytag: member="dbus-message.c::dbus_message_type_from_string" ref="ga40412bdfc6ba9cf9e167db4c23df0a7e" args="(const char *type_str)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="group__DBusMessage.html#gabc69747028f1e5adedc68f5ffd538c74">dbus_message_type_from_string</a> </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>type_str</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Utility function to convert a machine-readable (not translated) string into a D-Bus message type. </p>
<div class="fragment"><pre class="fragment"> <span class="stringliteral">"method_call"</span> -> <a class="code" href="group__DBusProtocol.html#ga09416afd76b65139eddd31e1085d9ebf" title="Message type of a method call message, see dbus_message_get_type()">DBUS_MESSAGE_TYPE_METHOD_CALL</a>
<span class="stringliteral">"method_return"</span> -> <a class="code" href="group__DBusProtocol.html#ga4a9012edd7f22342f845e98150aeb858" title="Message type of a method return message, see dbus_message_get_type()">DBUS_MESSAGE_TYPE_METHOD_RETURN</a>
<span class="stringliteral">"signal"</span> -> <a class="code" href="group__DBusProtocol.html#ga728d893ff0c00e126517ba39835220a5" title="Message type of a signal message, see dbus_message_get_type()">DBUS_MESSAGE_TYPE_SIGNAL</a>
<span class="stringliteral">"error"</span> -> <a class="code" href="group__DBusProtocol.html#ga2b9423d95066313d73eeea8eeaf86812" title="Message type of an error reply message, see dbus_message_get_type()">DBUS_MESSAGE_TYPE_ERROR</a>
anything <span class="keywordflow">else</span> -> <a class="code" href="group__DBusProtocol.html#gac975525a6ce258a7a70c583c9741b516" title="This value is never a valid message type, see dbus_message_get_type()">DBUS_MESSAGE_TYPE_INVALID</a>
</pre></div>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04663">4663</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-protocol_8h_source.html#l00238">DBUS_MESSAGE_TYPE_ERROR</a>, <a class="el" href="dbus-protocol_8h_source.html#l00232">DBUS_MESSAGE_TYPE_INVALID</a>, <a class="el" href="dbus-protocol_8h_source.html#l00234">DBUS_MESSAGE_TYPE_METHOD_CALL</a>, <a class="el" href="dbus-protocol_8h_source.html#l00236">DBUS_MESSAGE_TYPE_METHOD_RETURN</a>, and <a class="el" href="dbus-protocol_8h_source.html#l00240">DBUS_MESSAGE_TYPE_SIGNAL</a>.</p>
</div>
</div>
<a class="anchor" id="ga75bcb613a291eb7e427f77f2f3635b8f"></a><!-- doxytag: member="dbus-message.c::dbus_message_type_to_string" ref="ga75bcb613a291eb7e427f77f2f3635b8f" args="(int type)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* <a class="el" href="group__DBusMessage.html#ga13f28b9d8b321baa4536f820a359c092">dbus_message_type_to_string</a> </td>
<td>(</td>
<td class="paramtype">int </td>
<td class="paramname"><em>type</em></td><td>)</td>
<td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Utility function to convert a D-Bus message type into a machine-readable string (not translated). </p>
<div class="fragment"><pre class="fragment"> <a class="code" href="group__DBusProtocol.html#ga09416afd76b65139eddd31e1085d9ebf" title="Message type of a method call message, see dbus_message_get_type()">DBUS_MESSAGE_TYPE_METHOD_CALL</a> -> <span class="stringliteral">"method_call"</span>
<a class="code" href="group__DBusProtocol.html#ga4a9012edd7f22342f845e98150aeb858" title="Message type of a method return message, see dbus_message_get_type()">DBUS_MESSAGE_TYPE_METHOD_RETURN</a> -> <span class="stringliteral">"method_return"</span>
<a class="code" href="group__DBusProtocol.html#ga728d893ff0c00e126517ba39835220a5" title="Message type of a signal message, see dbus_message_get_type()">DBUS_MESSAGE_TYPE_SIGNAL</a> -> <span class="stringliteral">"signal"</span>
<a class="code" href="group__DBusProtocol.html#ga2b9423d95066313d73eeea8eeaf86812" title="Message type of an error reply message, see dbus_message_get_type()">DBUS_MESSAGE_TYPE_ERROR</a> -> <span class="stringliteral">"error"</span>
<a class="code" href="group__DBusProtocol.html#gac975525a6ce258a7a70c583c9741b516" title="This value is never a valid message type, see dbus_message_get_type()">DBUS_MESSAGE_TYPE_INVALID</a> -> <span class="stringliteral">"invalid"</span>
</pre></div>
<p>Definition at line <a class="el" href="dbus-message_8c_source.html#l04691">4691</a> of file <a class="el" href="dbus-message_8c_source.html">dbus-message.c</a>.</p>
<p>References <a class="el" href="dbus-protocol_8h_source.html#l00238">DBUS_MESSAGE_TYPE_ERROR</a>, <a class="el" href="dbus-protocol_8h_source.html#l00234">DBUS_MESSAGE_TYPE_METHOD_CALL</a>, <a class="el" href="dbus-protocol_8h_source.html#l00236">DBUS_MESSAGE_TYPE_METHOD_RETURN</a>, and <a class="el" href="dbus-protocol_8h_source.html#l00240">DBUS_MESSAGE_TYPE_SIGNAL</a>.</p>
<p>Referenced by <a class="el" href="dbus-connection_8c_source.html#l00625">_dbus_connection_message_sent_unlocked()</a>, <a class="el" href="dbus-connection_8c_source.html#l00480">_dbus_connection_queue_received_message_link()</a>, and <a class="el" href="dbus-connection_8c_source.html#l04549">dbus_connection_dispatch()</a>.</p>
</div>
</div>
</div><!-- contents -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Mar 3 2016 17:50:33 for D-Bus by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.6.1
</small></address>
</body>
</html>