blob: 7e3e5004a3a022539ea414f5b3f45a9ae5176d71 [file] [log] [blame]
<?php include '../_includes/header.php' ?><div class="refentry">
<a name="libmosquitto"></a><div class="titlepage"></div>
<div class="refnamediv">
<h2>Name</h2>
<p>libmosquitto — MQTT version 3.1 client library</p>
</div>
<div class="refsect1">
<a name="idp49107072"></a><h2>Description</h2>
<p>This is an overview of how to use libmosquitto to create MQTT
aware client programs. There may be separate man pages on each of the
functions described here in the future. There is also a binding for
libmosquitto for C++ and a Python implementation. They are not
documented here but operate in a similar way.</p>
<p>This is fairly incomplete, please see mosquitto.h for a better
description of the functions.</p>
</div>
<div class="refsect1">
<a name="idp49108944"></a><h2>libmosquitto symbol names</h2>
<p>All public functions in libmosquitto have the prefix
"mosquitto_". Any other functions defined in the source code are to be
treated as private functions and may change between any release. Do not
use these functions!</p>
</div>
<div class="refsect1">
<a name="idp49110336"></a><h2>Functions</h2>
<div class="refsect2">
<a name="idp49110976"></a><h3>Library version</h3>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_lib_version</b>(</code></td>
<td>
<var class="pdparam">major</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">minor</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">revision</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>int *<var class="pdparam">major</var></code>;<br><code>int *<var class="pdparam">minor</var></code>;<br><code>int *<var class="pdparam">revision</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<p>Obtain version information about the library. If any of
major, minor or revision are not NULL they will return the
corresponding version numbers. The return value is an integer
representation of the complete version number (e.g. 1009001 for 1.9.1)
that can be used for comparisons.</p>
</div>
<div class="refsect2">
<a name="idp49115376"></a><h3>Library initialisation and cleanup</h3>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_lib_init</b>(</code></td>
<td>
<code>)</code>;</td>
<td> </td>
</tr></table>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_lib_cleanup</b>(</code></td>
<td>
<code>)</code>;</td>
<td> </td>
</tr></table>
<div class="funcprototype-spacer"> </div>
</div>
<p>Call mosquitto_lib_init() before using any of the other
library functions and mosquitto_lib_cleanup() after finishing
with the library.</p>
</div>
<div class="refsect2">
<a name="idp49118992"></a><h3>Client constructor/destructor</h3>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">struct mosquitto *<b class="fsfunc">mosquitto_new</b>(</code></td>
<td>
<var class="pdparam">id</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">clean_session</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">userdata</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>const char *<var class="pdparam">id</var></code>;<br><code>bool <var class="pdparam">clean_session</var></code>;<br><code>void *<var class="pdparam">userdata</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<p>Create a new mosquitto client instance.</p>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
<td><code class="funcdef">void <b class="fsfunc">mosquitto_destroy</b>(</code></td>
<td>
<var class="pdparam">mosq</var><code>)</code>;</td>
<td> </td>
</tr></table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<p>Use to free memory associated with a mosquitto client instance.</p>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_reinitialise</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">id</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">clean_session</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">userdata</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>const char *<var class="pdparam">id</var></code>;<br><code>bool <var class="pdparam">clean_session</var></code>;<br><code>void *<var class="pdparam">userdata</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
</div>
<div class="refsect2">
<a name="idp49128720"></a><h3>Authentication and encryption</h3>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_username_pw_set</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">username</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">password</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>const char *<var class="pdparam">username</var></code>;<br><code>const char *<var class="pdparam">password</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_tls_set</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">cafile</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">capath</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">certfile</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">keyfile</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">(*pw_callback)(char *buf, int size, int rwflag, void *userdata)</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>const char *<var class="pdparam">cafile</var></code>;<br><code>const char *<var class="pdparam">capath</var></code>;<br><code>const char *<var class="pdparam">certfile</var></code>;<br><code>const char *<var class="pdparam">keyfile</var></code>;<br><code>int <var class="pdparam">(*pw_callback)(char *buf, int size, int rwflag, void *userdata)</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_tls_opts_set</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">cert_reqs</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">tls_version</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">ciphers</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>int <var class="pdparam">cert_reqs</var></code>;<br><code>const char *<var class="pdparam">tls_version</var></code>;<br><code>const char *<var class="pdparam">ciphers</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_tls_insecure_set</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">value</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>bool <var class="pdparam">value</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_tls_psk_set</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">psk</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">identity</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">ciphers</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>const char *<var class="pdparam">psk</var></code>;<br><code>const char *<var class="pdparam">identity</var></code>;<br><code>const char *<var class="pdparam">ciphers</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
</div>
<div class="refsect2">
<a name="idp49146768"></a><h3>Wills</h3>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_will_set</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">topic</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">payloadlen</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">payload</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">qos</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">retain</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>const char *<var class="pdparam">topic</var></code>;<br><code>int <var class="pdparam">payloadlen</var></code>;<br><code>const void *<var class="pdparam">payload</var></code>;<br><code>int <var class="pdparam">qos</var></code>;<br><code>bool <var class="pdparam">retain</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_will_clear</b>(</code></td>
<td>
<var class="pdparam">struct mosquitto *mosq</var><code>)</code>;</td>
<td> </td>
</tr></table>
<div class="paramdef-list">
<code><var class="pdparam">struct mosquitto *mosq</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
</div>
<div class="refsect2">
<a name="idp49153936"></a><h3>Connect/disconnect</h3>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_connect</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">host</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">port</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">keepalive</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>const char *<var class="pdparam">host</var></code>;<br><code>int <var class="pdparam">port</var></code>;<br><code>int <var class="pdparam">keepalive</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_connect_bind</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">host</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">port</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">keepalive</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">bind_address</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>const char *<var class="pdparam">host</var></code>;<br><code>int <var class="pdparam">port</var></code>;<br><code>int <var class="pdparam">keepalive</var></code>;<br><code>const char *<var class="pdparam">bind_address</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_connect_async</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">host</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">port</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">keepalive</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>const char *<var class="pdparam">host</var></code>;<br><code>int <var class="pdparam">port</var></code>;<br><code>int <var class="pdparam">keepalive</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_connect_bind_async</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">host</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">port</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">keepalive</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">bind_address</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>const char *<var class="pdparam">host</var></code>;<br><code>int <var class="pdparam">port</var></code>;<br><code>int <var class="pdparam">keepalive</var></code>;<br><code>const char *<var class="pdparam">bind_address</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_reconnect</b>(</code></td>
<td>
<var class="pdparam">mosq</var><code>)</code>;</td>
<td> </td>
</tr></table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_reconnect_async</b>(</code></td>
<td>
<var class="pdparam">mosq</var><code>)</code>;</td>
<td> </td>
</tr></table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_disconnect</b>(</code></td>
<td>
<var class="pdparam">mosq</var><code>)</code>;</td>
<td> </td>
</tr></table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
</div>
<div class="refsect2">
<a name="idp49175312"></a><h3>Publish</h3>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_publish</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">mid</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">topic</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">payloadlen</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">payload</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">qos</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">retain</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>int *<var class="pdparam">mid</var></code>;<br><code>const char *<var class="pdparam">topic</var></code>;<br><code>int <var class="pdparam">payloadlen</var></code>;<br><code>const void *<var class="pdparam">payload</var></code>;<br><code>int <var class="pdparam">qos</var></code>;<br><code>bool <var class="pdparam">retain</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
</div>
<div class="refsect2">
<a name="idp49181584"></a><h3>Subscribe/unsubscribe</h3>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_subscribe</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">mid</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">sub</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">qos</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>int *<var class="pdparam">mid</var></code>;<br><code>const char *<var class="pdparam">sub</var></code>;<br><code>int <var class="pdparam">qos</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_unsubscribe</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">mid</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">sub</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>int *<var class="pdparam">mid</var></code>;<br><code>const char *<var class="pdparam">sub</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
</div>
<div class="refsect2">
<a name="idp49188880"></a><h3>Network loop</h3>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_loop</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">timeout</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">max_packets</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>int <var class="pdparam">timeout</var></code>;<br><code>int <var class="pdparam">max_packets</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_loop_read</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">max_packets</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>int <var class="pdparam">max_packets</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_loop_write</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">max_packets</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>int <var class="pdparam">max_packets</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_loop_misc</b>(</code></td>
<td>
<var class="pdparam">mosq</var><code>)</code>;</td>
<td> </td>
</tr></table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_loop_forever</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">timeout</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">max_packets</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>int <var class="pdparam">timeout</var></code>;<br><code>int <var class="pdparam">max_packets</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_socket</b>(</code></td>
<td>
<var class="pdparam">mosq</var><code>)</code>;</td>
<td> </td>
</tr></table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
<td><code class="funcdef">bool <b class="fsfunc">mosquitto_want_write</b>(</code></td>
<td>
<var class="pdparam">mosq</var><code>)</code>;</td>
<td> </td>
</tr></table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
</div>
<div class="refsect2">
<a name="idp49205136"></a><h3>Threaded network loop</h3>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_loop_start</b>(</code></td>
<td>
<var class="pdparam">mosq</var><code>)</code>;</td>
<td> </td>
</tr></table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_loop_stop</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">force</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>bool <var class="pdparam">force</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
</div>
<div class="refsect2">
<a name="idp49209872"></a><h3>Misc client functions</h3>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_max_inflight_messages_set</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">max_inflight_messages</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>unsigned int <var class="pdparam">max_inflight_messages</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_message_retry_set</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">message_retry</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>unsigned int <var class="pdparam">message_retry</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_reconnect_delay_set</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">reconnect_delay</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">reconnect_delay_max</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">reconnect_exponential_backoff</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>unsigned int <var class="pdparam">reconnect_delay</var></code>;<br><code>unsigned int <var class="pdparam">reconnect_delay_max</var></code>;<br><code>bool <var class="pdparam">reconnect_exponential_backoff</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_user_data_set</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">userdata</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>void *<var class="pdparam">userdata</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
</div>
<div class="refsect2">
<a name="idp49221136"></a><h3>Callbacks</h3>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_connect_callback_set</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">(*on_connect)(struct mosquitto *, void *, int)</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>void <var class="pdparam">(*on_connect)(struct mosquitto *, void *, int)</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_disconnect_callback_set</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">(*on_disconnect)(struct mosquitto *, void *, int)</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>void <var class="pdparam">(*on_disconnect)(struct mosquitto *, void *, int)</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_publish_callback_set</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">(*on_publish)(struct mosquitto *, void *, int)</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>void <var class="pdparam">(*on_publish)(struct mosquitto *, void *, int)</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_message_callback_set</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">(*on_message)(struct mosquitto *, void *, const struct mosquitto_message *)</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>void <var class="pdparam">(*on_message)(struct mosquitto *, void *, const struct mosquitto_message *)</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_subscribe_callback_set</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">(*on_subscribe)(struct mosquitto *, void *, int, int, const int *)</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>void <var class="pdparam">(*on_subscribe)(struct mosquitto *, void *, int, int, const int *)</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_unsubscribe_callback_set</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">(*on_unsubscribe)(struct mosquitto *, void *, int)</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>void <var class="pdparam">(*on_unsubscribe)(struct mosquitto *, void *, int)</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_log_callback_set</b>(</code></td>
<td>
<var class="pdparam">mosq</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">(*on_unsubscribe)(struct mosquitto *, void *, int, const char *)</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto *<var class="pdparam">mosq</var></code>;<br><code>void <var class="pdparam">(*on_unsubscribe)(struct mosquitto *, void *, int, const char *)</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
</div>
<div class="refsect2">
<a name="idp49238032"></a><h3>Utility functions</h3>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
<td><code class="funcdef">const char *<b class="fsfunc">mosquitto_connack_string</b>(</code></td>
<td>
<var class="pdparam">connack_code</var><code>)</code>;</td>
<td> </td>
</tr></table>
<div class="paramdef-list">
<code>int <var class="pdparam">connack_code</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_message_copy</b>(</code></td>
<td>
<var class="pdparam">dst</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">src</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>struct mosquitto_message *<var class="pdparam">dst</var></code>;<br><code>const struct mosquitto_message *<var class="pdparam">src</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_message_free</b>(</code></td>
<td>
<var class="pdparam">message</var><code>)</code>;</td>
<td> </td>
</tr></table>
<div class="paramdef-list">
<code>struct mosquitto_message **<var class="pdparam">message</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr>
<td><code class="funcdef">const char *<b class="fsfunc">mosquitto_strerror</b>(</code></td>
<td>
<var class="pdparam">mosq_errno</var><code>)</code>;</td>
<td> </td>
</tr></table>
<div class="paramdef-list">
<code>int <var class="pdparam">mosq_errno</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_sub_topic_tokenise</b>(</code></td>
<td>
<var class="pdparam">subtopic</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">topics</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">count</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>const char *<var class="pdparam">subtopic</var></code>;<br><code>char ***<var class="pdparam">topics</var></code>;<br><code>int *<var class="pdparam">count</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_sub_topic_tokens_free</b>(</code></td>
<td>
<var class="pdparam">topics</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">count</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>char ***<var class="pdparam">topics</var></code>;<br><code>int <var class="pdparam">count</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
<div class="funcsynopsis">
<table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;">
<tr>
<td><code class="funcdef">int <b class="fsfunc">mosquitto_topic_matches_sub</b>(</code></td>
<td>
<var class="pdparam">sub</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">topic</var>, </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<var class="pdparam">result</var><code>)</code>;</td>
<td> </td>
</tr>
</table>
<div class="paramdef-list">
<code>const char *<var class="pdparam">sub</var></code>;<br><code>const char *<var class="pdparam">topic</var></code>;<br><code>bool *<var class="pdparam">result</var></code>;</div>
<div class="funcprototype-spacer"> </div>
</div>
</div>
</div>
<div class="refsect1">
<a name="idp49254416"></a><h2>Examples</h2>
<pre class="programlisting">
#include &lt;stdio.h&gt;
#include &lt;mosquitto.h&gt;
void my_message_callback(struct mosquitto *mosq, void *userdata, const struct mosquitto_message *message)
{
if(message-&gt;payloadlen){
printf("%s %s\n", message-&gt;topic, message-&gt;payload);
}else{
printf("%s (null)\n", message-&gt;topic);
}
fflush(stdout);
}
void my_connect_callback(struct mosquitto *mosq, void *userdata, int result)
{
int i;
if(!result){
/* Subscribe to broker information topics on successful connect. */
mosquitto_subscribe(mosq, NULL, "$SYS/#", 2);
}else{
fprintf(stderr, "Connect failed\n");
}
}
void my_subscribe_callback(struct mosquitto *mosq, void *userdata, int mid, int qos_count, const int *granted_qos)
{
int i;
printf("Subscribed (mid: %d): %d", mid, granted_qos[0]);
for(i=1; i&lt;qos_count; i++){
printf(", %d", granted_qos[i]);
}
printf("\n");
}
void my_log_callback(struct mosquitto *mosq, void *userdata, int level, const char *str)
{
/* Pring all log messages regardless of level. */
printf("%s\n", str);
}
int main(int argc, char *argv[])
{
int i;
char *host = "localhost";
int port = 1883;
int keepalive = 60;
bool clean_session = true;
struct mosquitto *mosq = NULL;
mosquitto_lib_init();
mosq = mosquitto_new(NULL, clean_session, NULL);
if(!mosq){
fprintf(stderr, "Error: Out of memory.\n");
return 1;
}
mosquitto_log_callback_set(mosq, my_log_callback);
mosquitto_connect_callback_set(mosq, my_connect_callback);
mosquitto_message_callback_set(mosq, my_message_callback);
mosquitto_subscribe_callback_set(mosq, my_subscribe_callback);
if(mosquitto_connect(mosq, host, port, keepalive)){
fprintf(stderr, "Unable to connect.\n");
return 1;
}
while(!mosquitto_loop(mosq, -1, 1)){
}
mosquitto_destroy(mosq);
mosquitto_lib_cleanup();
return 0;
}
</pre>
</div>
<div class="refsect1">
<a name="idp49259824"></a><h2>See Also</h2>
<span class="simplelist">
<span class="citerefentry"><span class="refentrytitle"><a class="link" href="mosquitto-8.php" target="_top">mosquitto</a></span>(8)</span>
<span class="citerefentry"><span class="refentrytitle"><a class="link" href="mqtt-7.php" target="_top">mqtt</a></span>(7)</span>
</span>
</div>
<div class="refsect1">
<a name="idp49264304"></a><h2>Author</h2>
<p>Roger Light <code class="email">&lt;<a class="email" href="mailto:roger@atchoo.org">roger@atchoo.org</a>&gt;</code></p>
</div>
</div><?php include '../_includes/footer.php' ?>