From f15530cbfa7b2e344844a36e1a199301a81b6383 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Sat, 2 Nov 2024 09:59:52 +0100 Subject: rename: subscribe --- src/subscribe.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/subscribe.c (limited to 'src/subscribe.c') diff --git a/src/subscribe.c b/src/subscribe.c new file mode 100644 index 0000000..82e7606 --- /dev/null +++ b/src/subscribe.c @@ -0,0 +1,80 @@ +// Standard C +#include +#include +#include +#include + +// System +#include + +// Mosquitto +#include + +// Project +#include "config.h" +#include "mqtt.h" + +#ifndef UNUSED +# define UNUSED(x) (void) (x) +#endif + +static volatile bool terminate; // NOLINT + +static void +signal_handler(int signal) +{ + if ( signal == SIGINT ) { + terminate = true; + } +} + +static void +cleanup_app(void) +{ + mosquitto_lib_cleanup(); +} + +static void +init_app(void) +{ + terminate = false; + (void) signal(SIGINT, signal_handler); + + mosquitto_lib_init(); + (void) atexit(cleanup_app); +} + +static void +callback(struct mosquitto *client, void *userdata, const struct mosquitto_message *message) +{ + UNUSED(client); + UNUSED(userdata); + printf("message '%.*s' for topic '%s'\n", + message->payloadlen, (const char *) message->payload, + message->topic); +} + +int +main(void) +{ + init_app(); + + struct mosquitto *client = mqtt_connect( + CLIENTID, + USERNAME, + PASSWORD, + HOSTNAME, + PORT, + callback, + NULL); + + if ( !client ) { + return EXIT_FAILURE; + } + + mqtt_run(client, (const char *[]){ TOPIC, NULL }, &terminate); + + mqtt_shutdown(client); + + return EXIT_SUCCESS; +} -- cgit v1.3