5#ifndef MQTT_SUBSCRIBER_H
6#define MQTT_SUBSCRIBER_H
9#include "bitrl/extern/nlohmann/json/json.hpp"
11#include <mqtt/async_client.h>
30 std::string
topic() const noexcept {
return topic_; }
35 std::optional<std::string>
36 poll(std::chrono::milliseconds timeout = std::chrono::milliseconds(1000));
38 std::optional<std::string>
39 read(std::chrono::milliseconds timeout = std::chrono::milliseconds::zero());
48 void publish(
const std::string &payload,
int_t qos = 1,
bool retained =
false);
54 void publish(
const nlohmann::json &payload,
int_t qos = 1,
bool retained =
false);
57 const std::string server_;
58 const std::string topic_;
60 mqtt::async_client cli_;
61 mqtt::connect_options conn_opts_;
64 std::condition_variable cv_;
65 std::queue<std::string> queue_;
Definition mqtt_subscriber.h:25
std::optional< std::string > read(std::chrono::milliseconds timeout=std::chrono::milliseconds::zero())
Definition mqtt_subscriber.cpp:69
~MqttSubscriber() override
Definition mqtt_subscriber.cpp:20
void publish(const std::string &payload, int_t qos=1, bool retained=false)
Definition mqtt_subscriber.cpp:100
void message_arrived(mqtt::const_message_ptr msg) override
Definition mqtt_subscriber.cpp:41
std::optional< std::string > poll(std::chrono::milliseconds timeout=std::chrono::milliseconds(1000))
Definition mqtt_subscriber.cpp:48
bool is_connected() const noexcept
Definition mqtt_subscriber.h:32
std::string topic() const noexcept
Definition mqtt_subscriber.h:30
void connect()
Definition mqtt_subscriber.cpp:32
Definition bitrl_consts.h:14
int int_t
integer type
Definition bitrl_types.h:33