libmosquitto (3) Linux Manual Page
NAME
libmosquitto – MQTT version 3.1 client library
DESCRIPTION
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.
This is fairly incomplete, please see mosquitto.h for a better description of the functions.
LIBMOSQUITTO SYMBOL NAMES
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!
FUNCTIONS
Library version
-
int mosquitto_lib_version(intmajor* , intminor* , intrevision* );
Library initialisation and cleanup
-
int mosquitto_lib_init(void);int mosquitto_lib_cleanup(void);
Client constructor/destructor
-
struct mosquitto *mosquitto_new(const charid* , boolclean_session, voiduserdata* );
-
void mosquitto_destroy(struct mosquittomosq* );
-
int mosquitto_reinitialise(struct mosquittomosq* , const charid* , boolclean_session, voiduserdata* );
Authentication and encryption
-
int mosquitto_username_pw_set(struct mosquittomosq* , const charusername* , const charpassword* );int mosquitto_tls_set(struct mosquittomosq* , const charcafile* , const charcapath* , const charcertfile* , const charkeyfile* , int(*pw_callback)(char*buf, int size, int rwflag, void *userdata) );int mosquitto_tls_opts_set(struct mosquittomosq* , intcert_reqs, const chartls_version* , const charciphers* );int mosquitto_tls_insecure_set(struct mosquittomosq* , boolvalue);int mosquitto_tls_psk_set(struct mosquittomosq* , const charpsk* , const charidentity* , const charciphers* );
Wills
-
int mosquitto_will_set(struct mosquittomosq* , const chartopic* , intpayloadlen, const voidpayload* , intqos, boolretain);int mosquitto_will_clear(struct mosquitto*mosq );
Connect/disconnect
-
int mosquitto_connect(struct mosquittomosq* , const charhost* , intport, intkeepalive);int mosquitto_connect_bind(struct mosquittomosq* , const charhost* , intport, intkeepalive, const charbind_address* );int mosquitto_connect_async(struct mosquittomosq* , const charhost* , intport, intkeepalive);int mosquitto_connect_bind_async(struct mosquittomosq* , const charhost* , intport, intkeepalive, const charbind_address* );int mosquitto_reconnect(struct mosquittomosq* );int mosquitto_reconnect_async(struct mosquittomosq* );int mosquitto_disconnect(struct mosquittomosq* );
Publish
-
int mosquitto_publish(struct mosquittomosq* , intmid* , const chartopic* , intpayloadlen, const voidpayload* , intqos, boolretain);
Subscribe/unsubscribe
-
int mosquitto_subscribe(struct mosquittomosq* , intmid* , const charsub* , intqos);int mosquitto_unsubscribe(struct mosquittomosq* , intmid* , const charsub* );
Network loop
-
int mosquitto_loop(struct mosquittomosq* , inttimeout, intmax_packets);int mosquitto_loop_read(struct mosquittomosq* , intmax_packets);int mosquitto_loop_write(struct mosquittomosq* , intmax_packets);int mosquitto_loop_misc(struct mosquittomosq* );int mosquitto_loop_forever(struct mosquittomosq* , inttimeout, intmax_packets);int mosquitto_socket(struct mosquittomosq* );bool mosquitto_want_write(struct mosquittomosq* );
Threaded network loop
-
int mosquitto_loop_start(struct mosquittomosq* );int mosquitto_loop_stop(struct mosquittomosq* , boolforce);
Misc client functions
-
int mosquitto_max_inflight_messages_set(struct mosquittomosq* , unsigned intmax_inflight_messages);int mosquitto_message_retry_set(struct mosquittomosq* , unsigned intmessage_retry);int mosquitto_reconnect_delay_set(struct mosquittomosq* , unsigned intreconnect_delay, unsigned intreconnect_delay_max, boolreconnect_exponential_backoff);int mosquitto_user_data_set(struct mosquittomosq* , voiduserdata* );
Callbacks
-
int mosquitto_connect_callback_set(struct mosquittomosq* , void(*on_connect)(struct mosquitto*, void *, int) );int mosquitto_disconnect_callback_set(struct mosquittomosq* , void(*on_disconnect)(struct mosquitto*, void *, int) );int mosquitto_publish_callback_set(struct mosquittomosq* , void(*on_publish)(struct mosquitto*, void *, int) );int mosquitto_message_callback_set(struct mosquittomosq* , void(*on_message)(struct mosquitto*, void *, const struct mosquitto_message *) );int mosquitto_subscribe_callback_set(struct mosquittomosq* , void(*on_subscribe)(struct mosquitto*, void *, int, int, const int *) );int mosquitto_unsubscribe_callback_set(struct mosquittomosq* , void(*on_unsubscribe)(struct mosquitto*, void *, int) );int mosquitto_log_callback_set(struct mosquittomosq* , void(*on_unsubscribe)(struct mosquitto*, void *, int, const char *) );
Utility functions
-
const char *mosquitto_connack_string(intconnack_code);int mosquitto_message_copy(struct mosquitto_messagedst* , const struct mosquitto_messagesrc* );int mosquitto_message_free(struct mosquitto_messagemessage** );const char *mosquitto_strerror(intmosq_errno);int mosquitto_sub_topic_tokenise(const charsubtopic* , chartopics*** , intcount* );int mosquitto_sub_topic_tokens_free(chartopics*** , intcount);int mosquitto_topic_matches_sub(const charsub* , const chartopic* , boolresult* );
EXAMPLES
-
#include <mosquitto.h> #include <stdio.h> void my_message_callback(struct mosquitto *mosq, void *userdata, const struct mosquitto_message *message) { if (message->payloadlen) { printf("%s %s ", message->topic, message->payload); } else { printf("%s (null) ", 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 "); } } 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(" "); } void my_log_callback(struct mosquitto *mosq, void *userdata, int level, const char *str) { /* Pring all log messages regardless of level. */ printf("%s ", 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. "); 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. "); return 1; } mosquitto_loop_forever(mosq, -1, 1); mosquitto_destroy(mosq); mosquitto_lib_cleanup(); return 0; }
SEE ALSO
AUTHOR
Roger Light <roger [at] atchoo.org>
