From e06d8a8e62bbbe027b29f2e032905eb9d8915033 Mon Sep 17 00:00:00 2001 From: gc87 Date: Wed, 15 Nov 2023 10:29:57 +0800 Subject: [PATCH] feat(mqtt): add support for will message --- include/neuron/connection/mqtt_client.h | 3 +++ src/connection/mqtt_client.c | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/include/neuron/connection/mqtt_client.h b/include/neuron/connection/mqtt_client.h index 3ecd0c80..faec6e75 100644 --- a/include/neuron/connection/mqtt_client.h +++ b/include/neuron/connection/mqtt_client.h @@ -74,6 +74,9 @@ size_t neu_mqtt_client_get_cached_msgs_num(neu_mqtt_client_t *client); int neu_mqtt_client_set_addr(neu_mqtt_client_t *client, const char *host, uint16_t port); int neu_mqtt_client_set_id(neu_mqtt_client_t *client, const char *id); +int neu_mqtt_client_set_will_msg(neu_mqtt_client_t *client, const char *topic, + uint8_t *msg, uint32_t len, bool retain, + uint8_t qos); int neu_mqtt_client_set_user(neu_mqtt_client_t *client, const char *username, const char *password); int neu_mqtt_client_set_connect_cb(neu_mqtt_client_t * client, diff --git a/src/connection/mqtt_client.c b/src/connection/mqtt_client.c index 56fb67f7..5ef4bc09 100644 --- a/src/connection/mqtt_client.c +++ b/src/connection/mqtt_client.c @@ -968,6 +968,26 @@ int neu_mqtt_client_set_id(neu_mqtt_client_t *client, const char *id) return 0; } +int neu_mqtt_client_set_will_msg(neu_mqtt_client_t *client, const char *topic, + uint8_t *msg, uint32_t len, bool retain, + uint8_t qos) +{ + if (NULL == topic || NULL == msg || 0 == len) { + return -1; + } + + nng_mtx_lock(client->mtx); + return_failure_if_open(); + + nng_mqtt_msg_set_connect_will_topic(client->conn_msg, topic); + nng_mqtt_msg_set_connect_will_msg(client->conn_msg, msg, len); + nng_mqtt_msg_set_connect_will_retain(client->conn_msg, retain); + nng_mqtt_msg_set_connect_will_qos(client->conn_msg, qos); + nng_mtx_unlock(client->mtx); + + return 0; +} + int neu_mqtt_client_set_user(neu_mqtt_client_t *client, const char *username, const char *password) {