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 {
100 const std::string& lastEventId,
101 const std::shared_ptr<iot::
mqtt::server::
broker::Broker>& broker);
105 void subscribeClient(
const std::string& clientId,
const std::string& topic,
const uint8_t qos);
107 void publishMessage(
const std::string& topic,
const std::string& message, uint8_t qoS,
bool retain);
118 const std::string& data,
119 const std::string& event,
120 const std::string& id);
121 static void sendJsonEvent(
const std::shared_ptr<
express::Response>& response,
123 const std::string& event =
"",
124 const std::string& id =
"");
125 void sendEvent(
const std::string& data,
const std::string& event =
"",
const std::string& id =
"")
const;
126 void sendJsonEvent(
const nlohmann::json& json,
const std::string& event =
"",
const std::string& id =
"")
const;
128 static std::string timePointToString(
const std::chrono::time_point<std::chrono::system_clock>& timePoint);
130 durationToString(
const std::chrono::time_point<std::chrono::system_clock>& bevore,
131 const std::chrono::time_point<std::chrono::system_clock>& later = std::chrono::system_clock::now());
MappedPublishes getMappings(const iot::mqtt::packets::Publish &publish)
EventReceiver(std::uint64_t id, const std::shared_ptr< express::Response > &response)
std::weak_ptr< express::Response > response
core::timer::Timer heartbeatTimer
std::uint64_t getId() const
void sendEvent(const std::string &data, const std::string &event="", const std::string &id="") const
void connectClient(Mqtt *mqtt)
std::uint64_t nextEventReceiverId
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