bitrl & cuberl Documentation
Simulation engine for reinforcement learning agents
Loading...
Searching...
No Matches
mqtt_subscriber.h
Go to the documentation of this file.
1//
2// Created by alex on 11/23/25.
3//
4
5#ifndef MQTT_SUBSCRIBER_H
6#define MQTT_SUBSCRIBER_H
7
8#include "bitrl/bitrl_types.h"
9#include "bitrl/extern/nlohmann/json/json.hpp"
10
11#include <mqtt/async_client.h>
12#include <mutex>
13#include <optional>
14#include <queue>
15#include <string>
16
17namespace bitrl
18{
19namespace network
20{
24class MqttSubscriber : public virtual mqtt::callback
25{
26 public:
27 MqttSubscriber(const std::string &server, const std::string &topic);
28 ~MqttSubscriber() override;
29
30 std::string topic() const noexcept { return topic_; }
31
32 bool is_connected() const noexcept { return cli_.is_connected(); }
33
34 void connect();
35 std::optional<std::string>
36 poll(std::chrono::milliseconds timeout = std::chrono::milliseconds(1000));
37
38 std::optional<std::string>
39 read(std::chrono::milliseconds timeout = std::chrono::milliseconds::zero());
40
41 void message_arrived(mqtt::const_message_ptr msg) override;
42
48 void publish(const std::string &payload, int_t qos = 1, bool retained = false);
49
54 void publish(const nlohmann::json &payload, int_t qos = 1, bool retained = false);
55
56 private:
57 const std::string server_;
58 const std::string topic_;
59
60 mqtt::async_client cli_;
61 mqtt::connect_options conn_opts_;
62
63 std::mutex mutex_;
64 std::condition_variable cv_;
65 std::queue<std::string> queue_;
66};
67} // namespace network
68} // namespace bitrl
69
70#endif // MQTT_SUBSCRIBER_H
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