-
Notifications
You must be signed in to change notification settings - Fork 254
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
new feature: non blocking esp_mqtt_client_publish function (IDFGH-2928) #155
Comments
@umer-ilyas Thanks for this request, we currently don't plan on adding a non-blocking version of the API. But please keep this open, this feature seems useful and might eventually look into it.
Please feel free to post as PR (If you like and willing to share), just prefix as "WIP" if so -- might be useful for others. PS: Might not be able to use the mqtt outbox for enqueueing QoS0 -- implementation detail, but there are some rules about the outbox in the spec IIRC. |
enqueue_message.zip bassically this worked for me without changing to much in original code. |
@umer-ilyas Thanks for sharing your code. We will evaluate! |
* Queueing publish messages to outbox when the client is not connected (default=off -> messages are queued if disconnected) * Use of incremental msg-id instead of random id (default=off -> msg-id uses platform_random()) * Posting a new event-id if a queued message gets deleted from the outbox (default=off -> events are not posted) Detailed description of included `esp-mqtt` changes (da850b0add1e71b3659bfac5d797cc834dc3e89b...9ea804e0ab5368d5ab53ae2301a5fec9d1f12f1a) * mqtt: Remove unused mqtt_header_state_t - esp-mqtt commit: espressif/esp-mqtt@b7158a4 - esp-mqtt MR: espressif/esp-mqtt!84 - Merges espressif/esp-mqtt#180 * Cleanup public include dirs - esp-mqtt commit: espressif/esp-mqtt@f65d5d0 - esp-mqtt MR: espressif/esp-mqtt!85 * Config: Add a new option to use incremental message id - esp-mqtt commit: espressif/esp-mqtt@8bb4a26 - esp-mqtt MR: espressif/esp-mqtt!85 - Closes espressif/esp-mqtt#176 * Publish: Add new API to enqueue qos>0 messages - esp-mqtt commit: espressif/esp-mqtt@dc7fd5c - esp-mqtt MR: espressif/esp-mqtt!85 - Closes espressif/esp-mqtt#155 * Config: Add a new option to disable publishing when disconnected - esp-mqtt commit: espressif/esp-mqtt@f44dcb1 - esp-mqtt MR: espressif/esp-mqtt!85 - Related espressif/esp-mqtt#177 * Events: Add new event to report deleted messages from outbox - esp-mqtt commit: espressif/esp-mqtt@2e35d4d - esp-mqtt MR: espressif/esp-mqtt!85 * Publish: Allow for qos=0 messages to be stored using esp_mqtt_client_enqueue() - esp-mqtt commit: espressif/esp-mqtt@e2de0f3 - esp-mqtt MR: espressif/esp-mqtt!85
* Queueing publish messages to outbox when the client is not connected (default=off -> messages are queued if disconnected) * Use of incremental msg-id instead of random id (default=off -> msg-id uses platform_random()) * Posting a new event-id if a queued message gets deleted from the outbox (default=off -> events are not posted) Detailed description of included `esp-mqtt` changes (da850b0add1e71b3659bfac5d797cc834dc3e89b...9ea804e0ab5368d5ab53ae2301a5fec9d1f12f1a) * mqtt: Remove unused mqtt_header_state_t - esp-mqtt commit: espressif/esp-mqtt@b7158a4 - esp-mqtt MR: espressif/esp-mqtt!84 - Merges espressif/esp-mqtt#180 * Cleanup public include dirs - esp-mqtt commit: espressif/esp-mqtt@f65d5d0 - esp-mqtt MR: espressif/esp-mqtt!85 * Config: Add a new option to use incremental message id - esp-mqtt commit: espressif/esp-mqtt@8bb4a26 - esp-mqtt MR: espressif/esp-mqtt!85 - Closes espressif/esp-mqtt#176 * Publish: Add new API to enqueue qos>0 messages - esp-mqtt commit: espressif/esp-mqtt@dc7fd5c - esp-mqtt MR: espressif/esp-mqtt!85 - Closes espressif/esp-mqtt#155 * Config: Add a new option to disable publishing when disconnected - esp-mqtt commit: espressif/esp-mqtt@f44dcb1 - esp-mqtt MR: espressif/esp-mqtt!85 - Related espressif/esp-mqtt#177 * Events: Add new event to report deleted messages from outbox - esp-mqtt commit: espressif/esp-mqtt@2e35d4d - esp-mqtt MR: espressif/esp-mqtt!85 * Publish: Allow for qos=0 messages to be stored using esp_mqtt_client_enqueue() - esp-mqtt commit: espressif/esp-mqtt@e2de0f3 - esp-mqtt MR: espressif/esp-mqtt!85
* Queueing publish messages to outbox when the client is not connected (default=off -> messages are queued if disconnected) * Use of incremental msg-id instead of random id (default=off -> msg-id uses platform_random()) * Posting a new event-id if a queued message gets deleted from the outbox (default=off -> events are not posted) Detailed description of included `esp-mqtt` changes (da850b0add1e71b3659bfac5d797cc834dc3e89b...9ea804e0ab5368d5ab53ae2301a5fec9d1f12f1a) * mqtt: Remove unused mqtt_header_state_t - esp-mqtt commit: espressif/esp-mqtt@b7158a4 - esp-mqtt MR: espressif/esp-mqtt!84 - Merges espressif/esp-mqtt#180 * Cleanup public include dirs - esp-mqtt commit: espressif/esp-mqtt@f65d5d0 - esp-mqtt MR: espressif/esp-mqtt!85 * Config: Add a new option to use incremental message id - esp-mqtt commit: espressif/esp-mqtt@8bb4a26 - esp-mqtt MR: espressif/esp-mqtt!85 - Closes espressif/esp-mqtt#176 * Publish: Add new API to enqueue qos>0 messages - esp-mqtt commit: espressif/esp-mqtt@dc7fd5c - esp-mqtt MR: espressif/esp-mqtt!85 - Closes espressif/esp-mqtt#155 * Config: Add a new option to disable publishing when disconnected - esp-mqtt commit: espressif/esp-mqtt@f44dcb1 - esp-mqtt MR: espressif/esp-mqtt!85 - Related espressif/esp-mqtt#177 * Events: Add new event to report deleted messages from outbox - esp-mqtt commit: espressif/esp-mqtt@2e35d4d - esp-mqtt MR: espressif/esp-mqtt!85 * Publish: Allow for qos=0 messages to be stored using esp_mqtt_client_enqueue() - esp-mqtt commit: espressif/esp-mqtt@e2de0f3 - esp-mqtt MR: espressif/esp-mqtt!85
* Queueing publish messages to outbox when the client is not connected (default=off -> messages are queued if disconnected) * Use of incremental msg-id instead of random id (default=off -> msg-id uses platform_random()) * Posting a new event-id if a queued message gets deleted from the outbox (default=off -> events are not posted) Detailed description of included `esp-mqtt` changes (da850b0add1e71b3659bfac5d797cc834dc3e89b...9ea804e0ab5368d5ab53ae2301a5fec9d1f12f1a) * mqtt: Remove unused mqtt_header_state_t - esp-mqtt commit: espressif/esp-mqtt@b7158a4 - esp-mqtt MR: espressif/esp-mqtt!84 - Merges espressif/esp-mqtt#180 * Cleanup public include dirs - esp-mqtt commit: espressif/esp-mqtt@f65d5d0 - esp-mqtt MR: espressif/esp-mqtt!85 * Config: Add a new option to use incremental message id - esp-mqtt commit: espressif/esp-mqtt@8bb4a26 - esp-mqtt MR: espressif/esp-mqtt!85 - Closes espressif/esp-mqtt#176 * Publish: Add new API to enqueue qos>0 messages - esp-mqtt commit: espressif/esp-mqtt@dc7fd5c - esp-mqtt MR: espressif/esp-mqtt!85 - Closes espressif/esp-mqtt#155 * Config: Add a new option to disable publishing when disconnected - esp-mqtt commit: espressif/esp-mqtt@f44dcb1 - esp-mqtt MR: espressif/esp-mqtt!85 - Related espressif/esp-mqtt#177 * Events: Add new event to report deleted messages from outbox - esp-mqtt commit: espressif/esp-mqtt@2e35d4d - esp-mqtt MR: espressif/esp-mqtt!85 * Publish: Allow for qos=0 messages to be stored using esp_mqtt_client_enqueue() - esp-mqtt commit: espressif/esp-mqtt@e2de0f3 - esp-mqtt MR: espressif/esp-mqtt!85
* Queueing publish messages to outbox when the client is not connected (default=off -> messages are queued if disconnected) * Use of incremental msg-id instead of random id (default=off -> msg-id uses platform_random()) * Posting a new event-id if a queued message gets deleted from the outbox (default=off -> events are not posted) Detailed description of included `esp-mqtt` changes (da850b0add1e71b3659bfac5d797cc834dc3e89b...9ea804e0ab5368d5ab53ae2301a5fec9d1f12f1a) * mqtt: Remove unused mqtt_header_state_t - esp-mqtt commit: espressif/esp-mqtt@b7158a4 - esp-mqtt MR: espressif/esp-mqtt!84 - Merges espressif/esp-mqtt#180 * Cleanup public include dirs - esp-mqtt commit: espressif/esp-mqtt@f65d5d0 - esp-mqtt MR: espressif/esp-mqtt!85 * Config: Add a new option to use incremental message id - esp-mqtt commit: espressif/esp-mqtt@8bb4a26 - esp-mqtt MR: espressif/esp-mqtt!85 - Closes espressif/esp-mqtt#176 * Publish: Add new API to enqueue qos>0 messages - esp-mqtt commit: espressif/esp-mqtt@dc7fd5c - esp-mqtt MR: espressif/esp-mqtt!85 - Closes espressif/esp-mqtt#155 * Config: Add a new option to disable publishing when disconnected - esp-mqtt commit: espressif/esp-mqtt@f44dcb1 - esp-mqtt MR: espressif/esp-mqtt!85 - Related espressif/esp-mqtt#177 * Events: Add new event to report deleted messages from outbox - esp-mqtt commit: espressif/esp-mqtt@2e35d4d - esp-mqtt MR: espressif/esp-mqtt!85 * Publish: Allow for qos=0 messages to be stored using esp_mqtt_client_enqueue() - esp-mqtt commit: espressif/esp-mqtt@e2de0f3 - esp-mqtt MR: espressif/esp-mqtt!85
* Queueing publish messages to outbox when the client is not connected (default=off -> messages are queued if disconnected) * Use of incremental msg-id instead of random id (default=off -> msg-id uses platform_random()) * Posting a new event-id if a queued message gets deleted from the outbox (default=off -> events are not posted) Detailed description of included `esp-mqtt` changes (da850b0...9ea804e) * mqtt: Remove unused mqtt_header_state_t - esp-mqtt commit: b7158a4 - esp-mqtt MR: espressif/esp-mqtt!84 - Merges #180 * Cleanup public include dirs - esp-mqtt commit: f65d5d0 - esp-mqtt MR: espressif/esp-mqtt!85 * Config: Add a new option to use incremental message id - esp-mqtt commit: 8bb4a26 - esp-mqtt MR: espressif/esp-mqtt!85 - Closes #176 * Publish: Add new API to enqueue qos>0 messages - esp-mqtt commit: dc7fd5c - esp-mqtt MR: espressif/esp-mqtt!85 - Closes #155 * Config: Add a new option to disable publishing when disconnected - esp-mqtt commit: f44dcb1 - esp-mqtt MR: espressif/esp-mqtt!85 - Related #177 * Events: Add new event to report deleted messages from outbox - esp-mqtt commit: 2e35d4d - esp-mqtt MR: espressif/esp-mqtt!85 * Publish: Allow for qos=0 messages to be stored using esp_mqtt_client_enqueue() - esp-mqtt commit: e2de0f3 - esp-mqtt MR: espressif/esp-mqtt!85
* Queueing publish messages to outbox when the client is not connected (default=off -> messages are queued if disconnected) * Use of incremental msg-id instead of random id (default=off -> msg-id uses platform_random()) * Posting a new event-id if a queued message gets deleted from the outbox (default=off -> events are not posted) Detailed description of included `esp-mqtt` changes (da850b0...9ea804e) * mqtt: Remove unused mqtt_header_state_t - esp-mqtt commit: espressif@b7158a4 - esp-mqtt MR: espressif/esp-mqtt!84 - Merges espressif#180 * Cleanup public include dirs - esp-mqtt commit: espressif@f65d5d0 - esp-mqtt MR: espressif/esp-mqtt!85 * Config: Add a new option to use incremental message id - esp-mqtt commit: espressif@8bb4a26 - esp-mqtt MR: espressif/esp-mqtt!85 - Closes espressif#176 * Publish: Add new API to enqueue qos>0 messages - esp-mqtt commit: espressif@dc7fd5c - esp-mqtt MR: espressif/esp-mqtt!85 - Closes espressif#155 * Config: Add a new option to disable publishing when disconnected - esp-mqtt commit: espressif@f44dcb1 - esp-mqtt MR: espressif/esp-mqtt!85 - Related espressif#177 * Events: Add new event to report deleted messages from outbox - esp-mqtt commit: espressif@2e35d4d - esp-mqtt MR: espressif/esp-mqtt!85 * Publish: Allow for qos=0 messages to be stored using esp_mqtt_client_enqueue() - esp-mqtt commit: espressif@e2de0f3 - esp-mqtt MR: espressif/esp-mqtt!85
* Queueing publish messages to outbox when the client is not connected (default=off -> messages are queued if disconnected) * Use of incremental msg-id instead of random id (default=off -> msg-id uses platform_random()) * Posting a new event-id if a queued message gets deleted from the outbox (default=off -> events are not posted) Detailed description of included `esp-mqtt` changes (da850b0...9ea804e) * mqtt: Remove unused mqtt_header_state_t - esp-mqtt commit: espressif@b7158a4 - esp-mqtt MR: espressif/esp-mqtt!84 - Merges espressif#180 * Cleanup public include dirs - esp-mqtt commit: espressif@f65d5d0 - esp-mqtt MR: espressif/esp-mqtt!85 * Config: Add a new option to use incremental message id - esp-mqtt commit: espressif@8bb4a26 - esp-mqtt MR: espressif/esp-mqtt!85 - Closes espressif#176 * Publish: Add new API to enqueue qos>0 messages - esp-mqtt commit: espressif@dc7fd5c - esp-mqtt MR: espressif/esp-mqtt!85 - Closes espressif#155 * Config: Add a new option to disable publishing when disconnected - esp-mqtt commit: espressif@f44dcb1 - esp-mqtt MR: espressif/esp-mqtt!85 - Related espressif#177 * Events: Add new event to report deleted messages from outbox - esp-mqtt commit: espressif@2e35d4d - esp-mqtt MR: espressif/esp-mqtt!85 * Publish: Allow for qos=0 messages to be stored using esp_mqtt_client_enqueue() - esp-mqtt commit: espressif@e2de0f3 - esp-mqtt MR: espressif/esp-mqtt!85
new feature request
as there is already outbox implemented in mqtt_clinet library. it would be awesome to have non-blocking version
esp_mqtt_client_publish
, which enqueue the messages in outbox and sent latter in main thread (esp_mqtt_task
).i have already custom implementation of this which only works for QOS1 and QOS2. but it will be good if it is embedded in library.
The text was updated successfully, but these errors were encountered: