mosquitto_publi sh с многопоточным клиентским интерфейсом mosquitto (асинхронный режим) - PullRequest
0 голосов
/ 29 января 2020

Я занимаюсь разработкой приложения C ++ в реальном времени и использую функцию mosquitto_publish из библиотеки libmosquitto C / C ++ в качестве последней части моего сервиса для отправки важной информации подключенным клиентам. Поскольку мне нужно определить точное время, необходимое для запуска моей службы за один цикл, мне было интересно, как ведет себя mosquitto_publish при использовании москита в его асинхронном режиме.

Поэтому я запускаю москит l oop свыше mosquitto_loop_start и, следовательно, используйте mosquitto_connect_async для управления асинхронным соединением с посредником в отдельном потоке.

Особые вопросы, которые у меня сейчас есть, - это как работает библиотека, когда в этом сценарии вызывается mosquitto_publish:

  • Сразу же вступает во владение библиотека и отправляет целые сообщения в его отдельные группы или это блокирующий вызов, пока не будет подтверждено, что сообщение MQTT было успешно отправлено брокеру? Глядя на возможные возвращаемые значения функции, я бы предположил первое.
  • Если это действительно так - есть ли возможность дождаться успешной передачи сообщения MQTT, прежде чем продолжить с кодом кроме ожидания возврата соответствующего обратного вызова on_publish?
  • Есть ли разница в случае mosquitto_connect / mosquitto_loop, когда вызовы выполняются синхронно? Я ссылаюсь на этот поток , где указано, что все действия mosquitto_publish выполняются асинхронно при использовании mosquitto_start.

Я не нашел никакой информации по этому поводу в описании API Mosquitto. Заранее спасибо за помощь!

...