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 MQTTBRIDGE_LIB_SSEDISTRIBUTOR_H
43#define MQTTBRIDGE_LIB_SSEDISTRIBUTOR_H
49#ifndef DOXYGEN_SHOULD_SKIP_THIS
52#include <core/timer/Timer.h>
56#include <nlohmann/json_fwd.hpp>
83 Event(
const std::string& data,
const std::string& event,
const std::string& id);
91 const std::string&
getData()
const;
93 const std::string&
getId()
const;
129 void brokerDisabled(
const std::string& bridgeName,
const std::string& instanceName);
130 void brokerConnecting(
const std::string& bridgeName,
const std::string& instanceName);
131 void brokerConnected(
const std::string& bridgeName,
const std::string& instanceName);
134 void brokerDisconnected(
const std::string& bridgeName,
const std::string& instanceName);
138 const std::string& data,
139 const std::string& event,
140 const std::string& id);
144 const std::string& event =
"",
145 const std::string& id =
"");
146 void sendEvent(
const std::string& data,
const std::string& event =
"",
const std::string& id =
"");
147 void sendJsonEvent(
const nlohmann::json& json,
const std::string& event =
"",
const std::string& id =
"");
149 static std::string
timePointToString(
const std::chrono::time_point<std::chrono::system_clock>& timePoint);
151 durationToString(
const std::chrono::time_point<std::chrono::system_clock>& bevore,
152 const std::chrono::time_point<std::chrono::system_clock>& later = std::chrono::system_clock::now());
Broker * getBroker(const std::string &fullInstanceName)
void addMqtt(mqtt::bridge::lib::Mqtt *mqtt)
const std::string & getName() const
const std::list< const mqtt::bridge::lib::Mqtt * > & getMqttList() const
const std::map< const std::string, Broker > & getBrokerMap() const
void publish(const mqtt::bridge::lib::Mqtt *originMqtt, const iot::mqtt::packets::Publish &publish)
bool operator<(const Bridge &rhs) const
void addBroker(const std::string &fullInstanceName, Broker &&broker)
std::size_t enabledBroker
std::list< const mqtt::bridge::lib::Mqtt * > mqttList
bool getAllConnected1() const
Bridge(const std::string &name, const std::string &prefix, bool disabled)
std::map< const std::string, Broker > brokerMap
void removeMqtt(mqtt::bridge::lib::Mqtt *mqtt)
const std::string & getPrefix() const
const std::string & getName() const
bool getLoopPrevention() const
Broker(const Broker &)=delete
const nlohmann::json & getAddress() const
const std::string & getWillTopic() const
bool getWillRetain() const
const std::list< iot::mqtt::Topic > & getTopics() const
std::list< iot::mqtt::Topic > topics
uint16_t getKeepAlive() const
const std::string & getWillMessage() const
const std::string & getSessionStoreFileName() const
const std::string & getClientId() const
const std::string & getEncryption() const
const std::string & getUsername() const
bool getCleanSession() const
Broker(Bridge &bridge, const std::string &sessionStoreFileName, const std::string &instanceName, const std::string &protocol, const std::string &encryption, const std::string &transport, const nlohmann::json &address, const std::string &clientId, const uint16_t keepAlive, bool cleanSession, const std::string &willTopic, const std::string &willMessage, const uint8_t willQoS, bool willRetain, const std::string &username, const std::string &password, bool loopPrevention, const std::string &prefix, bool disabled, const std::list< iot::mqtt::Topic > &topics)
const std::string & getPassword() const
const std::string & getProtocol() const
Broker(Broker &&)=default
std::string sessionStoreFileName
const std::string & getTransport() const
Bridge & getBridge() const
const std::string & getPrefix() const
uint8_t getWillQoS() const
const Broker & getBroker() const
core::timer::Timer heartbeatTimer
bool operator==(const EventReceiver &other)
std::weak_ptr< express::Response > response
std::shared_ptr< express::Response > getResponse() const
EventReceiver(const std::shared_ptr< express::Response > &response)
const std::string & getData() const
const std::string & getEvent() const
const std::string & getId() const
Event(const Event &)=delete
Event & operator=(Event &&)=delete
Event & operator=(const Event &)=delete
Event(const std::string &data, const std::string &event, const std::string &id)
~SSEDistributor()=default
void sendEvent(const std::string &data, const std::string &event="", const std::string &id="")
std::string bridgesStartedAt() const
static std::string durationToString(const std::chrono::time_point< std::chrono::system_clock > &bevore, const std::chrono::time_point< std::chrono::system_clock > &later=std::chrono::system_clock::now())
void bridgeStopped(const std::string &bridgeName)
void addEventReceiver(const std::shared_ptr< express::Response > &response, const std::string &lastEventId)
void brokerConnected(const std::string &bridgeName, const std::string &instanceName)
SSEDistributor(const SSEDistributor &)=delete
std::chrono::time_point< std::chrono::system_clock > bridgesStartTimePoint
void brokerConnecting(const std::string &bridgeName, const std::string &instanceName)
void brokerDisabled(const std::string &bridgeName, const std::string &instanceName)
static void sendJsonEvent(const std::shared_ptr< express::Response > &response, const nlohmann::json &json, const std::string &event="", const std::string &id="")
void bridgeDisabled(const std::string &bridgeName)
std::list< Event > replayEvents
SSEDistributor & operator=(const SSEDistributor &)=delete
static void sendEvent(const std::shared_ptr< express::Response > &response, const std::string &data, const std::string &event, const std::string &id)
void bridgeStarting(const std::string &bridgeName)
void bridgeStarted(const std::string &bridgeName)
static SSEDistributor & instance()
std::list< EventReceiver > eventReceiverList
SSEDistributor & operator=(SSEDistributor &&)=delete
SSEDistributor(SSEDistributor &&)=delete
std::chrono::time_point< std::chrono::system_clock > onlineSinceTimePoint
void brokerDisconnected(const std::string &bridgeName, const std::string &instanceName)
void brokerDisconnecting(const std::string &bridgeName, const std::string &instanceName)
static std::string timePointToString(const std::chrono::time_point< std::chrono::system_clock > &timePoint)
void sendJsonEvent(const nlohmann::json &json, const std::string &event="", const std::string &id="")
void bridgeStopping(const std::string &bridgeName)