@cryptotaxi247 / netdata-1 / commits / 967208aa0

MQTT5 Topic Alias (#14148)

* bump websockets * add new files to makefile * set topic aliases for used topics

Timotej S committed Jan 9, 2023 at 08:51 UTC 967208aa05307a04cf70e544a4e353899f347fb6
5 files changed +32 -3
Makefile.am
+5 -2
@@ -731,9 +731,12 @@ libmqttwebsockets_a_SOURCES = \
731 mqtt_websockets/c-rbuf/include/ringbuffer.h \
732 mqtt_websockets/c-rbuf/src/ringbuffer_internal.h \
733 mqtt_websockets/MQTT-C/src/mqtt.c \
734 - mqtt_websockets/MQTT-C/include/mqtt.h
734 + mqtt_websockets/MQTT-C/include/mqtt.h \
735 + mqtt_websockets/c_rhash/src/c_rhash.c \
736 + mqtt_websockets/c_rhash/include/c_rhash.h \
737 + mqtt_websockets/c_rhash/src/c_rhash_internal.h
738
736 -libmqttwebsockets_a_CFLAGS = $(CFLAGS) -DMQTT_WSS_CUSTOM_ALLOC -DRBUF_CUSTOM_MALLOC -I$(srcdir)/aclk/helpers
739 +libmqttwebsockets_a_CFLAGS = $(CFLAGS) -DMQTT_WSS_CUSTOM_ALLOC -DRBUF_CUSTOM_MALLOC -I$(srcdir)/aclk/helpers -I$(srcdir)/mqtt_websockets/c_rhash/include
740
741 if MQTT_WSS_DEBUG
742 libmqttwebsockets_a_CFLAGS += -DMQTT_WSS_DEBUG
aclk/aclk.c
+4
@@ -385,6 +385,10 @@ static inline void mqtt_connected_actions(mqtt_wss_client client)
385 aclk_rcvd_cloud_msgs = 0;
386 aclk_connection_counter++;
387
388 + aclk_topic_cache_iter_t iter = ACLK_TOPIC_CACHE_ITER_T_INITIALIZER;
389 + while ((topic = (char*)aclk_topic_cache_iterate(&iter)) != NULL)
390 + mqtt_wss_set_topic_alias(client, topic);
391 +
392 aclk_send_agent_connection_update(client, 1);
393 }
394
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 ee2eca38eb34609a8fabe99108e4c53cd0da7869