libmosquitto3Mosquitto ProjectLibrary callslibmosquittoMQTT version 3.1 client libraryDescriptionThis 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.This is fairly incomplete, please see mosquitto.h for a better
description of the functions.libmosquitto symbol namesAll 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!FunctionsLibrary versionint mosquitto_lib_versionint *majorint *minorint *revisionObtain 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.Library initialisation and cleanupint mosquitto_lib_initint mosquitto_lib_cleanupCall mosquitto_lib_init() before using any of the other
library functions and mosquitto_lib_cleanup() after finishing
with the library.Client constructor/destructorstruct mosquitto *mosquitto_newconst char *idbool clean_sessionvoid *userdataCreate a new mosquitto client instance.void mosquitto_destroystruct mosquitto *mosqUse to free memory associated with a mosquitto client instance.int mosquitto_reinitialisestruct mosquitto *mosqconst char *idbool clean_sessionvoid *userdataAuthentication and encryptionint mosquitto_username_pw_setstruct mosquitto *mosqconst char *usernameconst char *passwordint mosquitto_tls_setstruct mosquitto *mosqconst char *cafileconst char *capathconst char *certfileconst char *keyfileint (*pw_callback)(char *buf, int size, int rwflag, void *userdata)int mosquitto_tls_opts_setstruct mosquitto *mosqint cert_reqsconst char *tls_versionconst char *ciphersint mosquitto_tls_insecure_setstruct mosquitto *mosqbool valueint mosquitto_tls_psk_setstruct mosquitto *mosqconst char *pskconst char *identityconst char *ciphersWillsint mosquitto_will_setstruct mosquitto *mosqconst char *topicint payloadlenconst void *payloadint qosbool retainint mosquitto_will_clearstruct mosquitto *mosqConnect/disconnectint mosquitto_connectstruct mosquitto *mosqconst char *hostint portint keepaliveint mosquitto_connect_bindstruct mosquitto *mosqconst char *hostint portint keepaliveconst char *bind_addressint mosquitto_connect_asyncstruct mosquitto *mosqconst char *hostint portint keepaliveint mosquitto_connect_bind_asyncstruct mosquitto *mosqconst char *hostint portint keepaliveconst char *bind_addressint mosquitto_reconnectstruct mosquitto *mosqint mosquitto_reconnect_asyncstruct mosquitto *mosqint mosquitto_disconnectstruct mosquitto *mosqPublishint mosquitto_publishstruct mosquitto *mosqint *midconst char *topicint payloadlenconst void *payloadint qosbool retainSubscribe/unsubscribeint mosquitto_subscribestruct mosquitto *mosqint *midconst char *subint qosint mosquitto_unsubscribestruct mosquitto *mosqint *midconst char *subNetwork loopint mosquitto_loopstruct mosquitto *mosqint timeoutint max_packetsint mosquitto_loop_readstruct mosquitto *mosqint max_packetsint mosquitto_loop_writestruct mosquitto *mosqint max_packetsint mosquitto_loop_miscstruct mosquitto *mosqint mosquitto_loop_foreverstruct mosquitto *mosqint timeoutint max_packetsint mosquitto_socketstruct mosquitto *mosqbool mosquitto_want_writestruct mosquitto *mosqThreaded network loopint mosquitto_loop_startstruct mosquitto *mosqint mosquitto_loop_stopstruct mosquitto *mosqbool forceMisc client functionsint mosquitto_max_inflight_messages_setstruct mosquitto *mosqunsigned int max_inflight_messagesint mosquitto_reconnect_delay_setstruct mosquitto *mosqunsigned int reconnect_delayunsigned int reconnect_delay_maxbool reconnect_exponential_backoffint mosquitto_user_data_setstruct mosquitto *mosqvoid *userdataCallbacksint mosquitto_connect_callback_setstruct mosquitto *mosqvoid (*on_connect)(struct mosquitto *, void *, int)int mosquitto_disconnect_callback_setstruct mosquitto *mosqvoid (*on_disconnect)(struct mosquitto *, void *, int)int mosquitto_publish_callback_setstruct mosquitto *mosqvoid (*on_publish)(struct mosquitto *, void *, int)int mosquitto_message_callback_setstruct mosquitto *mosqvoid (*on_message)(struct mosquitto *, void *, const struct mosquitto_message *)int mosquitto_subscribe_callback_setstruct mosquitto *mosqvoid (*on_subscribe)(struct mosquitto *, void *, int, int, const int *)int mosquitto_unsubscribe_callback_setstruct mosquitto *mosqvoid (*on_unsubscribe)(struct mosquitto *, void *, int)int mosquitto_log_callback_setstruct mosquitto *mosqvoid (*on_unsubscribe)(struct mosquitto *, void *, int, const char *)Utility functionsconst char *mosquitto_connack_stringint connack_codeint mosquitto_message_copystruct mosquitto_message *dstconst struct mosquitto_message *srcint mosquitto_message_freestruct mosquitto_message **messageconst char *mosquitto_strerrorint mosq_errnoint mosquitto_sub_topic_tokeniseconst char *subtopicchar ***topicsint *countint mosquitto_sub_topic_tokens_freechar ***topicsint countint mosquitto_topic_matches_subconst char *subconst char *topicbool *resultExamples
#include <stdio.h>
#include <mosquitto.h>
void my_message_callback(struct mosquitto *mosq, void *userdata, const struct mosquitto_message *message)
{
if(message->payloadlen){
printf("%s %s\n", message->topic, message->payload);
}else{
printf("%s (null)\n", message->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<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;
}
See Alsomosquitto8mqtt7AuthorRoger Light roger@atchoo.org