2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
42#ifndef MQTTBROKER_LIB_MQTTMODEL_H
43#define MQTTBROKER_LIB_MQTTMODEL_H
45#include <core/timer/Timer.h>
47namespace mqtt::mqttbroker::
lib {
61#ifndef DOXYGEN_SHOULD_SKIP_THIS
68#include <nlohmann/json_fwd.hpp>
73namespace mqtt::mqttbroker::
lib {
97 const std::string& lastEventId,
98 const std::shared_ptr<iot::
mqtt::server::
broker::Broker>& broker);
102 void subscribeClient(
const std::string& clientId,
const std::string& topic,
const uint8_t qos);
104 void publishMessage(
const std::string& topic,
const std::string& message, uint8_t qoS,
bool retain);
115 const std::string& data,
116 const std::string& event,
117 const std::string& id);
118 static void sendJsonEvent(
const std::shared_ptr<
express::Response>& response,
120 const std::string& event =
"",
121 const std::string& id =
"");
122 void sendEvent(
const std::string& data,
const std::string& event =
"",
const std::string& id =
"")
const;
123 void sendJsonEvent(
const nlohmann::json& json,
const std::string& event =
"",
const std::string& id =
"")
const;
125 static std::string timePointToString(
const std::chrono::time_point<std::chrono::system_clock>& timePoint);
127 durationToString(
const std::chrono::time_point<std::chrono::system_clock>& bevore,
128 const std::chrono::time_point<std::chrono::system_clock>& later = std::chrono::system_clock::now());
MappedPublishes getMappings(const iot::mqtt::packets::Publish &publish)
std::pair< std::vector< iot::mqtt::packets::Publish >, std::vector< ScheduledPublish > > MappedPublishes
bool operator==(const EventReceiver &other)
std::weak_ptr< express::Response > response
EventReceiver(const std::shared_ptr< express::Response > &response)
core::timer::Timer heartbeatTimer
void sendEvent(const std::string &data, const std::string &event="", const std::string &id="") const
void connectClient(Mqtt *mqtt)
std::chrono::time_point< std::chrono::system_clock > onlineSinceTimePoint
void publishMessage(const std::string &topic, const std::string &message, uint8_t qoS, bool retain)
std::map< std::string, Mqtt * > modelMap
void addEventReceiver(const std::shared_ptr< express::Response > &response, const std::string &lastEventId, const std::shared_ptr< iot::mqtt::server::broker::Broker > &broker)
static MqttModel & instance()
void unsubscribeClient(const std::string &clientId, const std::string &topic)
std::list< EventReceiver > eventReceiverList
const std::map< std::string, Mqtt * > & getClients() const
Mqtt * getMqtt(const std::string &clientId) const
void subscribeClient(const std::string &clientId, const std::string &topic, const uint8_t qos)
void disconnectClient(const std::string &clientId)
static void sendEvent(const std::shared_ptr< express::Response > &response, const std::string &data, const std::string &event, const std::string &id)
std::string onlineDuration() const
std::string onlineSince() const
void delayPublish(const utils::Timeval &delay, const iot::mqtt::packets::Publish &publish)
const ScheduledPublish & top() const
std::priority_queue< ScheduledPublish, std::vector< ScheduledPublish >, EarlierFirst > minHeap
core::timer::Timer delayTimer
void unsubscribe(const std::string &topic)
void onPublish(const iot::mqtt::packets::Publish &publish) final
void onConnect(const iot::mqtt::packets::Connect &connect) final
void subscribe(const std::string &topic, uint8_t qoS)
void onDisconnected() final
std::shared_ptr< mqtt::lib::MqttMapper > mqttMapper
void onSubscribe(const iot::mqtt::packets::Subscribe &subscribe) final
void onUnsubscribe(const iot::mqtt::packets::Unsubscribe &unsubscribe) final
Mqtt(const std::string &connectionName, const std::shared_ptr< iot::mqtt::server::broker::Broker > &broker, const std::shared_ptr< mqtt::lib::MqttMapper > &mqttMapper)
DelayedQueue delayedQueue
iot::mqtt::packets::Publish publish
bool operator()(const ScheduledPublish &a, const ScheduledPublish &b) const
iot::mqtt::packets::Publish publish