@cryptotaxi247 / netdata-1 / commits / a749ab00a

MQTT 5 publish topic alias support (#14067)

* mqtt_websockets bumps version * use the new topic alias support in netdata

Timotej S committed Dec 13, 2022 at 12:32 UTC a749ab00a63b229d99f6bc82a965206e5481db3e
5 files changed +32 -3
Makefile.am
+5 -2
@@ -733,9 +733,12 @@ libmqttwebsockets_a_SOURCES = \
733 mqtt_websockets/c-rbuf/include/ringbuffer.h \
734 mqtt_websockets/c-rbuf/src/ringbuffer_internal.h \
735 mqtt_websockets/MQTT-C/src/mqtt.c \
736 - mqtt_websockets/MQTT-C/include/mqtt.h
736 + mqtt_websockets/MQTT-C/include/mqtt.h \
737 + mqtt_websockets/c_rhash/src/c_rhash.c \
738 + mqtt_websockets/c_rhash/include/c_rhash.h \
739 + mqtt_websockets/c_rhash/src/c_rhash_internal.h
740
738 -libmqttwebsockets_a_CFLAGS = $(CFLAGS) -DMQTT_WSS_CUSTOM_ALLOC -DRBUF_CUSTOM_MALLOC -I$(srcdir)/aclk/helpers
741 +libmqttwebsockets_a_CFLAGS = $(CFLAGS) -DMQTT_WSS_CUSTOM_ALLOC -DRBUF_CUSTOM_MALLOC -I$(srcdir)/aclk/helpers -I$(srcdir)/mqtt_websockets/c_rhash/include
742
743 mqtt_websockets/src/mqtt_wss_client.$(OBJEXT) : CFLAGS += -Wno-unused-result
744
aclk/aclk.c
+4
@@ -365,6 +365,10 @@ static inline void mqtt_connected_actions(mqtt_wss_client client)
365 aclk_rcvd_cloud_msgs = 0;
366 aclk_connection_counter++;
367
368 + aclk_topic_cache_iter_t iter = ACLK_TOPIC_CACHE_ITER_T_INITIALIZER;
369 + while ((topic = (char*)aclk_topic_cache_iterate(&iter)) != NULL)
370 + mqtt_wss_set_topic_alias(client, topic);
371 +
372 aclk_send_agent_connection_update(client, 1);
373 }
374
aclk/aclk_util.c
+18
@@ -307,6 +307,24 @@ const char *aclk_get_topic(enum aclk_topics topic)
307 return NULL;
308 }
309
310 +/*
311 + * Allows iterating all topics in topic cache without
312 + * having to resort to callbacks.
313 + */
314 +
315 +const char *aclk_topic_cache_iterate(aclk_topic_cache_iter_t *iter)
316 +{
317 + if (!aclk_topic_cache) {
318 + error("Topic cache not initialized when %s was called.", __FUNCTION__);
319 + return NULL;
320 + }
321 +
322 + if (*iter >= aclk_topic_cache_items)
323 + return NULL;
324 +
325 + return aclk_topic_cache[(*iter)++]->topic;
326 +}
327 +
328 /*
329 * TBEB with randomness
330 *
aclk/aclk_util.h
+4
@@ -93,9 +93,13 @@ enum aclk_topics {
93 ACLK_TOPICID_CTXS_UPDATED = 20
94 };
95
96 +typedef size_t aclk_topic_cache_iter_t;
97 +#define ACLK_TOPIC_CACHE_ITER_T_INITIALIZER (0)
98 +
99 const char *aclk_get_topic(enum aclk_topics topic);
100 int aclk_generate_topic_cache(struct json_object *json);
101 void free_topic_cache(void);
102 +const char *aclk_topic_cache_iterate(aclk_topic_cache_iter_t *iter);
103 // TODO
104 // aclk_topics_reload //when claim id changes
105
mqtt_websockets
+1 -1
@@ -1 +1 @@
1 -Subproject commit d1e30f55e2c21e3c8982c76e6a969a1e65292d90
1 +Subproject commit 8869ab354d10c071c1e5e33602cc6b7940b4427c