diff options
| -rw-r--r-- | src/main.c | 11 |
1 files changed, 7 insertions, 4 deletions
| @@ -76,11 +76,13 @@ connect(const char *clientid, // NOLINT | |||
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | static void | 78 | static void |
| 79 | run(struct mosquitto *client, const char *topic) | 79 | run(struct mosquitto *client, const char *topics[], const volatile bool *quit) |
| 80 | { | 80 | { |
| 81 | mosquitto_subscribe(client, NULL, topic, 0); | 81 | for ( size_t idx = 0; topics[idx] != NULL; ++idx ) { |
| 82 | mosquitto_subscribe(client, NULL, topics[idx], 0); | ||
| 83 | } | ||
| 82 | 84 | ||
| 83 | while ( !terminate ) { | 85 | while ( !*quit ) { |
| 84 | static const int defaultTimeout = -1; // 1000ms | 86 | static const int defaultTimeout = -1; // 1000ms |
| 85 | 87 | ||
| 86 | int err = mosquitto_loop(client, defaultTimeout, 1); | 88 | int err = mosquitto_loop(client, defaultTimeout, 1); |
| @@ -127,7 +129,8 @@ main(void) | |||
| 127 | return EXIT_FAILURE; | 129 | return EXIT_FAILURE; |
| 128 | } | 130 | } |
| 129 | 131 | ||
| 130 | run(client, TOPIC); | 132 | run(client, (const char *[]){ TOPIC, NULL }, &terminate); |
| 133 | |||
| 131 | shutdown(client); | 134 | shutdown(client); |
| 132 | 135 | ||
| 133 | return EXIT_SUCCESS; | 136 | return EXIT_SUCCESS; |
