1
0
mirror of https://github.com/eclipse/paho.mqtt.c.git synced 2025-06-08 19:14:47 +08:00
paho.mqtt.c/docs/MQTTClient_internal/html/MQTTPersistence_8c.html
2020-11-21 00:20:18 +00:00

704 lines
44 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MQTT C Client Libraries Internals: MQTTPersistence.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="pahologo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">MQTT C Client Libraries Internals
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">MQTTPersistence.c File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Functions that apply to persistence operations.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;string.h&gt;</code><br />
<code>#include &quot;MQTTPersistence.h&quot;</code><br />
<code>#include &quot;MQTTPersistenceDefault.h&quot;</code><br />
<code>#include &quot;MQTTProtocolClient.h&quot;</code><br />
<code>#include &quot;Heap.h&quot;</code><br />
<code>#include &quot;StackTrace.h&quot;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for MQTTPersistence.c:</div>
<div class="dyncontent">
<div class="center"><img src="MQTTPersistence_8c__incl.png" border="0" usemap="#MQTTPersistence_8c" alt=""/></div>
<map name="MQTTPersistence_8c" id="MQTTPersistence_8c">
<area shape="rect" title="Functions that apply to persistence operations." alt="" coords="9,5,147,32"/>
<area shape="rect" title=" " alt="" coords="5,80,65,107"/>
<area shape="rect" title=" " alt="" coords="90,80,154,107"/>
</map>
</div>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:abb137651652600a02e6bec838affc570"><td class="memItemLeft" align="right" valign="top"><a id="abb137651652600a02e6bec838affc570"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_NO_OF_BUFFERS</b>&#160;&#160;&#160;9</td></tr>
<tr class="separator:abb137651652600a02e6bec838affc570"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a4b8370699d4ddc794580851f779e39d1"><td class="memItemLeft" align="right" valign="top"><a id="a4b8370699d4ddc794580851f779e39d1"></a>
static <a class="el" href="structMQTTPersistence__qEntry.html">MQTTPersistence_qEntry</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>MQTTPersistence_restoreQueueEntry</b> (char *buffer, size_t buflen, int MQTTVersion)</td></tr>
<tr class="separator:a4b8370699d4ddc794580851f779e39d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49f1d08df1958c5e77354ba05abe4c87"><td class="memItemLeft" align="right" valign="top"><a id="a49f1d08df1958c5e77354ba05abe4c87"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>MQTTPersistence_insertInSeqOrder</b> (<a class="el" href="structList.html">List</a> *list, <a class="el" href="structMQTTPersistence__qEntry.html">MQTTPersistence_qEntry</a> *<a class="el" href="structqEntry.html">qEntry</a>, size_t size)</td></tr>
<tr class="separator:a49f1d08df1958c5e77354ba05abe4c87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75e756280e499db530896c5b74b8d3b5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="MQTTPersistence_8c.html#a75e756280e499db530896c5b74b8d3b5">MQTTPersistence_create</a> (<a class="el" href="structMQTTClient__persistence.html">MQTTClient_persistence</a> **persistence, int type, void *pcontext)</td></tr>
<tr class="memdesc:a75e756280e499db530896c5b74b8d3b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a <a class="el" href="structMQTTClient__persistence.html" title="A structure containing the function pointers to a persistence implementation and the context or state...">MQTTClient_persistence</a> structure representing a persistence implementation. <a href="MQTTPersistence_8c.html#a75e756280e499db530896c5b74b8d3b5">More...</a><br /></td></tr>
<tr class="separator:a75e756280e499db530896c5b74b8d3b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65b64467da967b6930966b98f249406e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="MQTTPersistence_8c.html#a65b64467da967b6930966b98f249406e">MQTTPersistence_initialize</a> (<a class="el" href="structClients.html">Clients</a> *c, const char *serverURI)</td></tr>
<tr class="memdesc:a65b64467da967b6930966b98f249406e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open persistent store and restore any persisted messages. <a href="MQTTPersistence_8c.html#a65b64467da967b6930966b98f249406e">More...</a><br /></td></tr>
<tr class="separator:a65b64467da967b6930966b98f249406e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a385b6c191dbf51652d3e3a81813848f1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="MQTTPersistence_8c.html#a385b6c191dbf51652d3e3a81813848f1">MQTTPersistence_close</a> (<a class="el" href="structClients.html">Clients</a> *c)</td></tr>
<tr class="memdesc:a385b6c191dbf51652d3e3a81813848f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close persistent store. <a href="MQTTPersistence_8c.html#a385b6c191dbf51652d3e3a81813848f1">More...</a><br /></td></tr>
<tr class="separator:a385b6c191dbf51652d3e3a81813848f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f6056b7418b66a3786a5028b2357a86"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="MQTTPersistence_8c.html#a6f6056b7418b66a3786a5028b2357a86">MQTTPersistence_clear</a> (<a class="el" href="structClients.html">Clients</a> *c)</td></tr>
<tr class="memdesc:a6f6056b7418b66a3786a5028b2357a86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clears the persistent store. <a href="MQTTPersistence_8c.html#a6f6056b7418b66a3786a5028b2357a86">More...</a><br /></td></tr>
<tr class="separator:a6f6056b7418b66a3786a5028b2357a86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e607d17e088a493097af07e9c7b0006"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="MQTTPersistence_8c.html#a3e607d17e088a493097af07e9c7b0006">MQTTPersistence_restorePackets</a> (<a class="el" href="structClients.html">Clients</a> *c)</td></tr>
<tr class="memdesc:a3e607d17e088a493097af07e9c7b0006"><td class="mdescLeft">&#160;</td><td class="mdescRight">Restores the persisted records to the outbound and inbound message queues of the client. <a href="MQTTPersistence_8c.html#a3e607d17e088a493097af07e9c7b0006">More...</a><br /></td></tr>
<tr class="separator:a3e607d17e088a493097af07e9c7b0006"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6bc55eebf10d7a7f7e2849b3e33716d1"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="MQTTPersistence_8c.html#a6bc55eebf10d7a7f7e2849b3e33716d1">MQTTPersistence_restorePacket</a> (int MQTTVersion, char *buffer, size_t buflen)</td></tr>
<tr class="memdesc:a6bc55eebf10d7a7f7e2849b3e33716d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a MQTT packet restored from persisted data. <a href="MQTTPersistence_8c.html#a6bc55eebf10d7a7f7e2849b3e33716d1">More...</a><br /></td></tr>
<tr class="separator:a6bc55eebf10d7a7f7e2849b3e33716d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a568adcd6ad3542d6f631a7f7a2e682e5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="MQTTPersistence_8c.html#a568adcd6ad3542d6f631a7f7a2e682e5">MQTTPersistence_insertInOrder</a> (<a class="el" href="structList.html">List</a> *list, void *content, size_t size)</td></tr>
<tr class="memdesc:a568adcd6ad3542d6f631a7f7a2e682e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Inserts the specified message into the list, maintaining message ID order. <a href="MQTTPersistence_8c.html#a568adcd6ad3542d6f631a7f7a2e682e5">More...</a><br /></td></tr>
<tr class="separator:a568adcd6ad3542d6f631a7f7a2e682e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a879b91862bb099e16ca81e57ba36e3fe"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="MQTTPersistence_8c.html#a879b91862bb099e16ca81e57ba36e3fe">MQTTPersistence_putPacket</a> (int socket, char *buf0, size_t buf0len, int count, char **buffers, size_t *buflens, int htype, int msgId, int scr, int MQTTVersion)</td></tr>
<tr class="memdesc:a879b91862bb099e16ca81e57ba36e3fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a record to the persistent store. <a href="MQTTPersistence_8c.html#a879b91862bb099e16ca81e57ba36e3fe">More...</a><br /></td></tr>
<tr class="separator:a879b91862bb099e16ca81e57ba36e3fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba48f1a44c540fa37bca207cae3cbbd3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="MQTTPersistence_8c.html#aba48f1a44c540fa37bca207cae3cbbd3">MQTTPersistence_remove</a> (<a class="el" href="structClients.html">Clients</a> *c, char *type, int qos, int msgId)</td></tr>
<tr class="memdesc:aba48f1a44c540fa37bca207cae3cbbd3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deletes a record from the persistent store. <a href="MQTTPersistence_8c.html#aba48f1a44c540fa37bca207cae3cbbd3">More...</a><br /></td></tr>
<tr class="separator:aba48f1a44c540fa37bca207cae3cbbd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adbf5881a3c6ce9bd7062182dfffe27fa"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="MQTTPersistence_8c.html#adbf5881a3c6ce9bd7062182dfffe27fa">MQTTPersistence_wrapMsgID</a> (<a class="el" href="structClients.html">Clients</a> *client)</td></tr>
<tr class="memdesc:adbf5881a3c6ce9bd7062182dfffe27fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether the message IDs wrapped by looking for the largest gap between two consecutive message IDs in the outboundMsgs queue. <a href="MQTTPersistence_8c.html#adbf5881a3c6ce9bd7062182dfffe27fa">More...</a><br /></td></tr>
<tr class="separator:adbf5881a3c6ce9bd7062182dfffe27fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd17e0ec0c7c29d4ba536ee80cb1c964"><td class="memItemLeft" align="right" valign="top"><a id="acd17e0ec0c7c29d4ba536ee80cb1c964"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>MQTTPersistence_unpersistQueueEntry</b> (<a class="el" href="structClients.html">Clients</a> *client, <a class="el" href="structMQTTPersistence__qEntry.html">MQTTPersistence_qEntry</a> *qe)</td></tr>
<tr class="separator:acd17e0ec0c7c29d4ba536ee80cb1c964"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19f3f5b8d2336a3ffe5aa82137d64eb5"><td class="memItemLeft" align="right" valign="top"><a id="a19f3f5b8d2336a3ffe5aa82137d64eb5"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>MQTTPersistence_persistQueueEntry</b> (<a class="el" href="structClients.html">Clients</a> *aclient, <a class="el" href="structMQTTPersistence__qEntry.html">MQTTPersistence_qEntry</a> *qe)</td></tr>
<tr class="separator:a19f3f5b8d2336a3ffe5aa82137d64eb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4f6437946ac80d5f9e882e92e59cc5c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="MQTTPersistence_8c.html#ab4f6437946ac80d5f9e882e92e59cc5c">MQTTPersistence_restoreMessageQueue</a> (<a class="el" href="structClients.html">Clients</a> *c)</td></tr>
<tr class="memdesc:ab4f6437946ac80d5f9e882e92e59cc5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Restores a queue of messages from persistence to memory. <a href="MQTTPersistence_8c.html#ab4f6437946ac80d5f9e882e92e59cc5c">More...</a><br /></td></tr>
<tr class="separator:ab4f6437946ac80d5f9e882e92e59cc5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Functions that apply to persistence operations. </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a6f6056b7418b66a3786a5028b2357a86"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6f6056b7418b66a3786a5028b2357a86">&#9670;&nbsp;</a></span>MQTTPersistence_clear()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MQTTPersistence_clear </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structClients.html">Clients</a> *&#160;</td>
<td class="paramname"><em>c</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Clears the persistent store. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">client</td><td>the client as <a class="el" href="structClients.html" title="Data related to one client.">Clients</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if success, <a class="el" href="MQTTClientPersistence_8h.html#ab716e21e53c84a5ad62aa962a2a8f7db" title="Application-specific persistence functions must return this error code if there is a problem executin...">MQTTCLIENT_PERSISTENCE_ERROR</a> otherwise. </dd></dl>
</div>
</div>
<a id="a385b6c191dbf51652d3e3a81813848f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a385b6c191dbf51652d3e3a81813848f1">&#9670;&nbsp;</a></span>MQTTPersistence_close()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MQTTPersistence_close </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structClients.html">Clients</a> *&#160;</td>
<td class="paramname"><em>c</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Close persistent store. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">client</td><td>the client as <a class="el" href="structClients.html" title="Data related to one client.">Clients</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if success, <a class="el" href="MQTTClientPersistence_8h.html#ab716e21e53c84a5ad62aa962a2a8f7db" title="Application-specific persistence functions must return this error code if there is a problem executin...">MQTTCLIENT_PERSISTENCE_ERROR</a> otherwise. </dd></dl>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="MQTTPersistence_8c_a385b6c191dbf51652d3e3a81813848f1_cgraph.png" border="0" usemap="#MQTTPersistence_8c_a385b6c191dbf51652d3e3a81813848f1_cgraph" alt=""/></div>
<map name="MQTTPersistence_8c_a385b6c191dbf51652d3e3a81813848f1_cgraph" id="MQTTPersistence_8c_a385b6c191dbf51652d3e3a81813848f1_cgraph">
<area shape="rect" title="Close persistent store." alt="" coords="5,5,172,32"/>
<area shape="rect" href="MQTTPersistenceDefault_8c.html#a919cf4710a1f7d7ce0878599e9aa4700" title="Create persistence directory for the client: context/clientID&#45;serverURI." alt="" coords="220,5,288,32"/>
<area shape="rect" href="MQTTPersistenceDefault_8c.html#aecfbfa761dfca1b551d9ade325f480b1" title="Function to create a directory." alt="" coords="336,5,408,32"/>
</map>
</div>
</div>
</div>
<a id="a75e756280e499db530896c5b74b8d3b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75e756280e499db530896c5b74b8d3b5">&#9670;&nbsp;</a></span>MQTTPersistence_create()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MQTTPersistence_create </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structMQTTClient__persistence.html">MQTTClient_persistence</a> **&#160;</td>
<td class="paramname"><em>persistence</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>pcontext</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a <a class="el" href="structMQTTClient__persistence.html" title="A structure containing the function pointers to a persistence implementation and the context or state...">MQTTClient_persistence</a> structure representing a persistence implementation. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">persistence</td><td>the <a class="el" href="structMQTTClient__persistence.html" title="A structure containing the function pointers to a persistence implementation and the context or state...">MQTTClient_persistence</a> structure. </td></tr>
<tr><td class="paramname">type</td><td>the type of the persistence implementation. See <a class="el" href="MQTTClient_8c.html#a9a0518d9ca924d12c1329dbe3de5f2b6" title="This function creates an MQTT client ready for connection to the specified server and using the speci...">MQTTClient_create</a>. </td></tr>
<tr><td class="paramname">pcontext</td><td>the context for this persistence implementation. See <a class="el" href="MQTTClient_8c.html#a9a0518d9ca924d12c1329dbe3de5f2b6" title="This function creates an MQTT client ready for connection to the specified server and using the speci...">MQTTClient_create</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if success, <a class="el" href="MQTTClientPersistence_8h.html#ab716e21e53c84a5ad62aa962a2a8f7db" title="Application-specific persistence functions must return this error code if there is a problem executin...">MQTTCLIENT_PERSISTENCE_ERROR</a> otherwise. </dd></dl>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="MQTTPersistence_8c_a75e756280e499db530896c5b74b8d3b5_cgraph.png" border="0" usemap="#MQTTPersistence_8c_a75e756280e499db530896c5b74b8d3b5_cgraph" alt=""/></div>
<map name="MQTTPersistence_8c_a75e756280e499db530896c5b74b8d3b5_cgraph" id="MQTTPersistence_8c_a75e756280e499db530896c5b74b8d3b5_cgraph">
<area shape="rect" title="Creates a MQTTClient_persistence structure representing a persistence implementation." alt="" coords="5,183,176,209"/>
<area shape="rect" href="MQTTPersistenceDefault_8c.html#a15b1457f7fd20dde1fd51ed434321e1a" title="Delete all the persisted message in the client persistence directory." alt="" coords="245,5,313,32"/>
<area shape="rect" href="MQTTPersistenceDefault_8c.html#a24f38d19ff3db61292d7b463e59174ef" title="Delete client persistence directory (if empty)." alt="" coords="243,56,314,83"/>
<area shape="rect" href="MQTTPersistenceDefault_8c.html#a2a55461def3359a2b0aff6b3bb0644ad" title="Returns whether if a wire message is persisted in the client persistence directory." alt="" coords="224,107,333,133"/>
<area shape="rect" href="MQTTPersistenceDefault_8c.html#a3aef9f9af29882fac9e76984e4c2954c" title="Retrieve a wire message from the client persistence directory." alt="" coords="249,157,308,184"/>
<area shape="rect" href="MQTTPersistenceDefault_8c.html#a9f358375b8e254983d00f8b057e97dd6" title="Returns the keys (file names w/o the extension) in the client persistence directory." alt="" coords="245,208,312,235"/>
<area shape="rect" href="MQTTPersistenceDefault_8c.html#a919cf4710a1f7d7ce0878599e9aa4700" title="Create persistence directory for the client: context/clientID&#45;serverURI." alt="" coords="245,259,313,285"/>
<area shape="rect" href="MQTTPersistenceDefault_8c.html#a64e0c1a2fd06375b975d6643175572d8" title="Write wire message to the client persistence directory." alt="" coords="249,309,308,336"/>
<area shape="rect" href="MQTTPersistenceDefault_8c.html#a64b106b9a2778f97d271af7c9a7940f2" title="Delete a persisted message from the client persistence directory." alt="" coords="381,335,464,361"/>
<area shape="rect" href="MQTTPersistenceDefault_8c.html#aecfbfa761dfca1b551d9ade325f480b1" title="Function to create a directory." alt="" coords="387,259,459,285"/>
</map>
</div>
</div>
</div>
<a id="a65b64467da967b6930966b98f249406e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a65b64467da967b6930966b98f249406e">&#9670;&nbsp;</a></span>MQTTPersistence_initialize()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MQTTPersistence_initialize </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structClients.html">Clients</a> *&#160;</td>
<td class="paramname"><em>c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>serverURI</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Open persistent store and restore any persisted messages. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">client</td><td>the client as <a class="el" href="structClients.html" title="Data related to one client.">Clients</a>. </td></tr>
<tr><td class="paramname">serverURI</td><td>the URI of the remote end. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if success, <a class="el" href="MQTTClientPersistence_8h.html#ab716e21e53c84a5ad62aa962a2a8f7db" title="Application-specific persistence functions must return this error code if there is a problem executin...">MQTTCLIENT_PERSISTENCE_ERROR</a> otherwise. </dd></dl>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="MQTTPersistence_8c_a65b64467da967b6930966b98f249406e_cgraph.png" border="0" usemap="#MQTTPersistence_8c_a65b64467da967b6930966b98f249406e_cgraph" alt=""/></div>
<map name="MQTTPersistence_8c_a65b64467da967b6930966b98f249406e_cgraph" id="MQTTPersistence_8c_a65b64467da967b6930966b98f249406e_cgraph">
<area shape="rect" title="Open persistent store and restore any persisted messages." alt="" coords="5,169,187,196"/>
<area shape="rect" href="MQTTPersistence_8c.html#a3e607d17e088a493097af07e9c7b0006" title="Restores the persisted records to the outbound and inbound message queues of the client." alt="" coords="235,169,457,196"/>
<area shape="rect" href="LinkedList_8c.html#abc7a28449893dfa775c2f709349968b4" title="Append an item to a list." alt="" coords="1024,52,1112,78"/>
<area shape="rect" href="Log_8c.html#a669722e3f57811871f97c12392aba85d" title="Log a message." alt="" coords="591,220,635,246"/>
<area shape="rect" href="MQTTPacket_8c.html#a642e5f62d21f14e81f8fc70b491d89c8" title="Free allocated storage for a publish packet." alt="" coords="527,270,699,297"/>
<area shape="rect" href="MQTTPersistence_8c.html#a568adcd6ad3542d6f631a7f7a2e682e5" title="Inserts the specified message into the list, maintaining message ID order." alt="" coords="524,103,703,144"/>
<area shape="rect" href="MQTTPersistence_8c.html#a6bc55eebf10d7a7f7e2849b3e33716d1" title="Returns a MQTT packet restored from persisted data." alt="" coords="505,321,721,348"/>
<area shape="rect" href="MQTTPersistence_8c.html#adbf5881a3c6ce9bd7062182dfffe27fa" title="Checks whether the message IDs wrapped by looking for the largest gap between two consecutive message..." alt="" coords="513,169,714,196"/>
<area shape="rect" href="MQTTProtocolClient_8c.html#afbf121be11a48fcda3e0d639bc47472b" title="Copy and store message data for retries." alt="" coords="512,52,715,78"/>
<area shape="rect" href="LinkedList_8c.html#a321a3598d6979c7af3f995b77ea2cec3" title="Append an already allocated ListElement and content to a list." alt="" coords="1160,81,1303,108"/>
<area shape="rect" href="LinkedList_8c.html#aabca387fa4b86475bc9e4da40c3977fc" title="Insert an item to a list at a specific position." alt="" coords="1029,106,1107,133"/>
<area shape="rect" href="LinkedList_8c.html#a7c6fba7f4b569c69829676bed2852ee9" title="Forward iteration through a list." alt="" coords="813,164,932,190"/>
<area shape="rect" href="MQTTProtocolClient_8c.html#ac753a3ad12292a0a9c2f4343bd33817e" title="Store message data for possible retry." alt="" coords="769,52,976,78"/>
</map>
</div>
</div>
</div>
<a id="a568adcd6ad3542d6f631a7f7a2e682e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a568adcd6ad3542d6f631a7f7a2e682e5">&#9670;&nbsp;</a></span>MQTTPersistence_insertInOrder()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void MQTTPersistence_insertInOrder </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structList.html">List</a> *&#160;</td>
<td class="paramname"><em>list</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void *&#160;</td>
<td class="paramname"><em>content</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Inserts the specified message into the list, maintaining message ID order. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">list</td><td>the list to insert the message into. </td></tr>
<tr><td class="paramname">content</td><td>the message to add. </td></tr>
<tr><td class="paramname">size</td><td>size of the message. </td></tr>
</table>
</dd>
</dl>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="MQTTPersistence_8c_a568adcd6ad3542d6f631a7f7a2e682e5_cgraph.png" border="0" usemap="#MQTTPersistence_8c_a568adcd6ad3542d6f631a7f7a2e682e5_cgraph" alt=""/></div>
<map name="MQTTPersistence_8c_a568adcd6ad3542d6f631a7f7a2e682e5_cgraph" id="MQTTPersistence_8c_a568adcd6ad3542d6f631a7f7a2e682e5_cgraph">
<area shape="rect" title="Inserts the specified message into the list, maintaining message ID order." alt="" coords="5,23,184,65"/>
<area shape="rect" href="LinkedList_8c.html#aabca387fa4b86475bc9e4da40c3977fc" title="Insert an item to a list at a specific position." alt="" coords="253,5,330,32"/>
<area shape="rect" href="LinkedList_8c.html#a7c6fba7f4b569c69829676bed2852ee9" title="Forward iteration through a list." alt="" coords="232,56,351,83"/>
<area shape="rect" href="LinkedList_8c.html#a321a3598d6979c7af3f995b77ea2cec3" title="Append an already allocated ListElement and content to a list." alt="" coords="399,5,541,32"/>
</map>
</div>
</div>
</div>
<a id="a879b91862bb099e16ca81e57ba36e3fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a879b91862bb099e16ca81e57ba36e3fe">&#9670;&nbsp;</a></span>MQTTPersistence_putPacket()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MQTTPersistence_putPacket </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>socket</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>buf0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>buf0len</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char **&#160;</td>
<td class="paramname"><em>buffers</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t *&#160;</td>
<td class="paramname"><em>buflens</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>htype</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>msgId</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>scr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>MQTTVersion</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds a record to the persistent store. </p>
<p>This function must not be called for QoS0 messages. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">socket</td><td>the socket of the client. </td></tr>
<tr><td class="paramname">buf0</td><td>fixed header. </td></tr>
<tr><td class="paramname">buf0len</td><td>length of the fixed header. </td></tr>
<tr><td class="paramname">count</td><td>number of buffers representing the variable header and/or the payload. </td></tr>
<tr><td class="paramname">buffers</td><td>the buffers representing the variable header and/or the payload. </td></tr>
<tr><td class="paramname">buflens</td><td>length of the buffers representing the variable header and/or the payload. </td></tr>
<tr><td class="paramname">htype</td><td>MQTT packet type - PUBLISH or PUBREL </td></tr>
<tr><td class="paramname">msgId</td><td>the message ID. </td></tr>
<tr><td class="paramname">scr</td><td>0 indicates message in the sending direction; 1 indicates message in the receiving direction. </td></tr>
<tr><td class="paramname">the</td><td>MQTT version being used (&gt;= MQTTVERSION_5 means properties included) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if success, <a class="el" href="MQTTClientPersistence_8h.html#ab716e21e53c84a5ad62aa962a2a8f7db" title="Application-specific persistence functions must return this error code if there is a problem executin...">MQTTCLIENT_PERSISTENCE_ERROR</a> otherwise. </dd></dl>
</div>
</div>
<a id="aba48f1a44c540fa37bca207cae3cbbd3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba48f1a44c540fa37bca207cae3cbbd3">&#9670;&nbsp;</a></span>MQTTPersistence_remove()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MQTTPersistence_remove </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structClients.html">Clients</a> *&#160;</td>
<td class="paramname"><em>c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>qos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>msgId</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deletes a record from the persistent store. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">client</td><td>the client as <a class="el" href="structClients.html" title="Data related to one client.">Clients</a>. </td></tr>
<tr><td class="paramname">type</td><td>the type of the persisted record: #PERSISTENCE_PUBLISH_SENT, #PERSISTENCE_PUBREL or #PERSISTENCE_PUBLISH_RECEIVED. </td></tr>
<tr><td class="paramname">qos</td><td>the qos field of the message. </td></tr>
<tr><td class="paramname">msgId</td><td>the message ID. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if success, <a class="el" href="MQTTClientPersistence_8h.html#ab716e21e53c84a5ad62aa962a2a8f7db" title="Application-specific persistence functions must return this error code if there is a problem executin...">MQTTCLIENT_PERSISTENCE_ERROR</a> otherwise. </dd></dl>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="MQTTPersistence_8c_aba48f1a44c540fa37bca207cae3cbbd3_cgraph.png" border="0" usemap="#MQTTPersistence_8c_aba48f1a44c540fa37bca207cae3cbbd3_cgraph" alt=""/></div>
<map name="MQTTPersistence_8c_aba48f1a44c540fa37bca207cae3cbbd3_cgraph" id="MQTTPersistence_8c_aba48f1a44c540fa37bca207cae3cbbd3_cgraph">
<area shape="rect" title="Deletes a record from the persistent store." alt="" coords="5,5,184,32"/>
<area shape="rect" href="Log_8c.html#a669722e3f57811871f97c12392aba85d" title="Log a message." alt="" coords="232,5,276,32"/>
</map>
</div>
</div>
</div>
<a id="ab4f6437946ac80d5f9e882e92e59cc5c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab4f6437946ac80d5f9e882e92e59cc5c">&#9670;&nbsp;</a></span>MQTTPersistence_restoreMessageQueue()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MQTTPersistence_restoreMessageQueue </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structClients.html">Clients</a> *&#160;</td>
<td class="paramname"><em>c</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Restores a queue of messages from persistence to memory. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">c</td><td>the client as <a class="el" href="structClients.html" title="Data related to one client.">Clients</a> - the client object to restore the messages to </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>return code, 0 if successful </dd></dl>
</div>
</div>
<a id="a6bc55eebf10d7a7f7e2849b3e33716d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6bc55eebf10d7a7f7e2849b3e33716d1">&#9670;&nbsp;</a></span>MQTTPersistence_restorePacket()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* MQTTPersistence_restorePacket </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>MQTTVersion</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char *&#160;</td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>buflen</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a MQTT packet restored from persisted data. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">buffer</td><td>the persisted data. </td></tr>
<tr><td class="paramname">buflen</td><td>the number of bytes of the data buffer. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a3e607d17e088a493097af07e9c7b0006"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3e607d17e088a493097af07e9c7b0006">&#9670;&nbsp;</a></span>MQTTPersistence_restorePackets()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int MQTTPersistence_restorePackets </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structClients.html">Clients</a> *&#160;</td>
<td class="paramname"><em>c</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Restores the persisted records to the outbound and inbound message queues of the client. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">client</td><td>the client as <a class="el" href="structClients.html" title="Data related to one client.">Clients</a>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if success, <a class="el" href="MQTTClientPersistence_8h.html#ab716e21e53c84a5ad62aa962a2a8f7db" title="Application-specific persistence functions must return this error code if there is a problem executin...">MQTTCLIENT_PERSISTENCE_ERROR</a> otherwise. </dd></dl>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="MQTTPersistence_8c_a3e607d17e088a493097af07e9c7b0006_cgraph.png" border="0" usemap="#MQTTPersistence_8c_a3e607d17e088a493097af07e9c7b0006_cgraph" alt=""/></div>
<map name="MQTTPersistence_8c_a3e607d17e088a493097af07e9c7b0006_cgraph" id="MQTTPersistence_8c_a3e607d17e088a493097af07e9c7b0006_cgraph">
<area shape="rect" title="Restores the persisted records to the outbound and inbound message queues of the client." alt="" coords="5,169,228,196"/>
<area shape="rect" href="LinkedList_8c.html#abc7a28449893dfa775c2f709349968b4" title="Append an item to a list." alt="" coords="795,52,883,78"/>
<area shape="rect" href="Log_8c.html#a669722e3f57811871f97c12392aba85d" title="Log a message." alt="" coords="362,220,406,246"/>
<area shape="rect" href="MQTTPacket_8c.html#a642e5f62d21f14e81f8fc70b491d89c8" title="Free allocated storage for a publish packet." alt="" coords="298,270,470,297"/>
<area shape="rect" href="MQTTPersistence_8c.html#a568adcd6ad3542d6f631a7f7a2e682e5" title="Inserts the specified message into the list, maintaining message ID order." alt="" coords="295,103,473,144"/>
<area shape="rect" href="MQTTPersistence_8c.html#a6bc55eebf10d7a7f7e2849b3e33716d1" title="Returns a MQTT packet restored from persisted data." alt="" coords="276,321,492,348"/>
<area shape="rect" href="MQTTPersistence_8c.html#adbf5881a3c6ce9bd7062182dfffe27fa" title="Checks whether the message IDs wrapped by looking for the largest gap between two consecutive message..." alt="" coords="283,169,485,196"/>
<area shape="rect" href="MQTTProtocolClient_8c.html#afbf121be11a48fcda3e0d639bc47472b" title="Copy and store message data for retries." alt="" coords="283,52,485,78"/>
<area shape="rect" href="LinkedList_8c.html#a321a3598d6979c7af3f995b77ea2cec3" title="Append an already allocated ListElement and content to a list." alt="" coords="931,81,1073,108"/>
<area shape="rect" href="LinkedList_8c.html#aabca387fa4b86475bc9e4da40c3977fc" title="Insert an item to a list at a specific position." alt="" coords="800,106,877,133"/>
<area shape="rect" href="LinkedList_8c.html#a7c6fba7f4b569c69829676bed2852ee9" title="Forward iteration through a list." alt="" coords="584,164,703,190"/>
<area shape="rect" href="MQTTProtocolClient_8c.html#ac753a3ad12292a0a9c2f4343bd33817e" title="Store message data for possible retry." alt="" coords="540,52,747,78"/>
</map>
</div>
</div>
</div>
<a id="adbf5881a3c6ce9bd7062182dfffe27fa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adbf5881a3c6ce9bd7062182dfffe27fa">&#9670;&nbsp;</a></span>MQTTPersistence_wrapMsgID()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void MQTTPersistence_wrapMsgID </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structClients.html">Clients</a> *&#160;</td>
<td class="paramname"><em>client</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks whether the message IDs wrapped by looking for the largest gap between two consecutive message IDs in the outboundMsgs queue. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">client</td><td>the client as <a class="el" href="structClients.html" title="Data related to one client.">Clients</a>. </td></tr>
</table>
</dd>
</dl>
<div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="MQTTPersistence_8c_adbf5881a3c6ce9bd7062182dfffe27fa_cgraph.png" border="0" usemap="#MQTTPersistence_8c_adbf5881a3c6ce9bd7062182dfffe27fa_cgraph" alt=""/></div>
<map name="MQTTPersistence_8c_adbf5881a3c6ce9bd7062182dfffe27fa_cgraph" id="MQTTPersistence_8c_adbf5881a3c6ce9bd7062182dfffe27fa_cgraph">
<area shape="rect" title="Checks whether the message IDs wrapped by looking for the largest gap between two consecutive message..." alt="" coords="5,5,207,32"/>
<area shape="rect" href="LinkedList_8c.html#a7c6fba7f4b569c69829676bed2852ee9" title="Forward iteration through a list." alt="" coords="255,5,373,32"/>
</map>
</div>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Nov 21 2020 00:15:30 for MQTT C Client Libraries Internals by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>