Skip to content
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

Closed
umer-ilyas opened this issue Mar 20, 2020 · 3 comments
Closed

Comments

@umer-ilyas
Copy link
Contributor

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.

@github-actions github-actions bot changed the title new feature: non blocking esp_mqtt_client_publish function new feature: non blocking esp_mqtt_client_publish function (IDFGH-2928) Mar 20, 2020
@david-cermak
Copy link
Collaborator

@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.

i have already custom implementation of this which only works for QOS1 and QOS2.

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.

@umer-ilyas
Copy link
Contributor Author

enqueue_message.zip
this was implementation i was using (sorry for late reply got stuck with other things ). yes it does not work for QoS0.

bassically this worked for me without changing to much in original code.

@david-cermak
Copy link
Collaborator

@umer-ilyas Thanks for sharing your code. We will evaluate!

espressif-bot pushed a commit to espressif/esp-idf that referenced this issue Jan 15, 2021
* 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
rich1111 pushed a commit to rich1111/esp-mqtt that referenced this issue Mar 4, 2021
projectgus pushed a commit to espressif/esp-idf that referenced this issue Jun 15, 2021
* 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
espressif-bot pushed a commit to espressif/esp-idf that referenced this issue Jul 18, 2021
* 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
espressif-bot pushed a commit to espressif/esp-idf that referenced this issue Jul 29, 2021
* 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
espressif-bot pushed a commit to espressif/esp-idf that referenced this issue Jul 30, 2021
* 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
david-cermak added a commit that referenced this issue Dec 16, 2022
* 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
egnor pushed a commit to egnor/esp-mqtt that referenced this issue Dec 23, 2022
* 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
egnor pushed a commit to egnor/esp-mqtt that referenced this issue Dec 23, 2022
* 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants