mirror of
https://github.com/espressif/esp-mqtt.git
synced 2025-07-30 02:38:19 +02:00
Config: Add a new option to disable publishing when disconnected
Related https://github.com/espressif/esp-mqtt/pull/177
This commit is contained in:
@ -302,8 +302,10 @@ int esp_mqtt_client_unsubscribe(esp_mqtt_client_handle_t client, const char *top
|
|||||||
* - This API might block for several seconds, either due to network timeout (10s)
|
* - This API might block for several seconds, either due to network timeout (10s)
|
||||||
* or if publishing payloads longer than internal buffer (due to message
|
* or if publishing payloads longer than internal buffer (due to message
|
||||||
* fragmentation)
|
* fragmentation)
|
||||||
* - Client doesn't have to be connected to send publish message
|
* - Client doesn't have to be connected for this API to work, enqueueing the messages
|
||||||
* (although it would drop all qos=0 messages, qos>1 messages would be enqueued)
|
* with qos>1 (returning -1 for all the qos=0 messages if disconnected).
|
||||||
|
* If MQTT_SKIP_PUBLISH_IF_DISCONNECTED is enabled, this API will not attempt to publish
|
||||||
|
* when the client is not connected and will always return -1.
|
||||||
* - It is thread safe, please refer to `esp_mqtt_client_subscribe` for details
|
* - It is thread safe, please refer to `esp_mqtt_client_subscribe` for details
|
||||||
*
|
*
|
||||||
* @param client mqtt client handle
|
* @param client mqtt client handle
|
||||||
|
@ -17,6 +17,8 @@
|
|||||||
|
|
||||||
#define MQTT_MSG_ID_INCREMENTAL CONFIG_MQTT_MSG_ID_INCREMENTAL
|
#define MQTT_MSG_ID_INCREMENTAL CONFIG_MQTT_MSG_ID_INCREMENTAL
|
||||||
|
|
||||||
|
#define MQTT_SKIP_PUBLISH_IF_DISCONNECTED CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED
|
||||||
|
|
||||||
#if CONFIG_MQTT_BUFFER_SIZE
|
#if CONFIG_MQTT_BUFFER_SIZE
|
||||||
#define MQTT_BUFFER_SIZE_BYTE CONFIG_MQTT_BUFFER_SIZE
|
#define MQTT_BUFFER_SIZE_BYTE CONFIG_MQTT_BUFFER_SIZE
|
||||||
#else
|
#else
|
||||||
|
@ -1653,6 +1653,13 @@ static inline int mqtt_client_enqueue_priv(esp_mqtt_client_handle_t client, cons
|
|||||||
int esp_mqtt_client_publish(esp_mqtt_client_handle_t client, const char *topic, const char *data, int len, int qos, int retain)
|
int esp_mqtt_client_publish(esp_mqtt_client_handle_t client, const char *topic, const char *data, int len, int qos, int retain)
|
||||||
{
|
{
|
||||||
MQTT_API_LOCK(client);
|
MQTT_API_LOCK(client);
|
||||||
|
#if MQTT_SKIP_PUBLISH_IF_DISCONNECTED
|
||||||
|
if (client->state != MQTT_STATE_CONNECTED) {
|
||||||
|
ESP_LOGE(TAG, "Publish failed: client is not connected");
|
||||||
|
MQTT_API_UNLOCK(client);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
int pending_msg_id = mqtt_client_enqueue_priv(client, topic, data, len, qos, retain);
|
int pending_msg_id = mqtt_client_enqueue_priv(client, topic, data, len, qos, retain);
|
||||||
if (pending_msg_id < 0) {
|
if (pending_msg_id < 0) {
|
||||||
MQTT_API_UNLOCK(client);
|
MQTT_API_UNLOCK(client);
|
||||||
|
Reference in New Issue
Block a user