MQTTSuite
Loading...
Searching...
No Matches
mqtt::mqttbroker::lib::Mqtt Class Reference

#include <Mqtt.h>

Inheritance diagram for mqtt::mqttbroker::lib::Mqtt:
Collaboration diagram for mqtt::mqttbroker::lib::Mqtt:

Classes

struct  EarlierFirst
class  DelayedQueue
struct  ScheduledPublish

Public Member Functions

 Mqtt (const std::string &connectionName, const std::shared_ptr< iot::mqtt::server::broker::Broker > &broker, const std::shared_ptr< mqtt::lib::MqttMapper > &mqttMapper)
void subscribe (const std::string &topic, uint8_t qoS)
void unsubscribe (const std::string &topic)

Private Member Functions

void onConnect (const iot::mqtt::packets::Connect &connect) final
void onPublish (const iot::mqtt::packets::Publish &publish) final
void onSubscribe (const iot::mqtt::packets::Subscribe &subscribe) final
void onUnsubscribe (const iot::mqtt::packets::Unsubscribe &unsubscribe) final
void onDisconnected () final

Private Attributes

std::shared_ptr< mqtt::lib::MqttMappermqttMapper
DelayedQueue delayedQueue

Detailed Description

Definition at line 75 of file Mqtt.h.

Constructor & Destructor Documentation

◆ Mqtt()

mqtt::mqttbroker::lib::Mqtt::Mqtt ( const std::string & connectionName,
const std::shared_ptr< iot::mqtt::server::broker::Broker > & broker,
const std::shared_ptr< mqtt::lib::MqttMapper > & mqttMapper )
explicit

Definition at line 70 of file Mqtt.cpp.

73 : iot::mqtt::server::Mqtt(connectionName, broker)
75 , delayedQueue(this) {
76 }
std::shared_ptr< mqtt::lib::MqttMapper > mqttMapper
Definition Mqtt.h:118
DelayedQueue delayedQueue
Definition Mqtt.h:119

References mqtt::mqttbroker::lib::Mqtt::DelayedQueue::DelayedQueue(), delayedQueue, and mqttMapper.

Referenced by mqtt::mqttbroker::SocketContextFactory::create(), and mqtt::mqttbroker::websocket::SubProtocolFactory::create().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Function Documentation

◆ onConnect()

void mqtt::mqttbroker::lib::Mqtt::onConnect ( const iot::mqtt::packets::Connect & connect)
finalprivate

Definition at line 154 of file Mqtt.cpp.

154 {
156 }
static MqttModel & instance()

References mqtt::mqttbroker::lib::MqttModel::connectClient(), and mqtt::mqttbroker::lib::MqttModel::instance().

Here is the call graph for this function:

◆ onDisconnected()

void mqtt::mqttbroker::lib::Mqtt::onDisconnected ( )
finalprivate

Definition at line 192 of file Mqtt.cpp.

192 {
194 }
void disconnectClient(const std::string &clientId)

References mqtt::mqttbroker::lib::MqttModel::disconnectClient(), and mqtt::mqttbroker::lib::MqttModel::instance().

Here is the call graph for this function:

◆ onPublish()

void mqtt::mqttbroker::lib::Mqtt::onPublish ( const iot::mqtt::packets::Publish & publish)
finalprivate

Definition at line 158 of file Mqtt.cpp.

158 {
159 MqttModel::instance().publishMessage(publish.getTopic(), publish.getMessage(), publish.getQoS(), publish.getRetain());
160
161 if (mqttMapper != nullptr) {
162 const auto& [immediatePublishes, scheduledPublishes] = mqttMapper->getMappings(publish);
163
164 for (const mqtt::lib::MqttMapper::ScheduledPublish& delayedPublish : scheduledPublishes) {
165 delayedQueue.delayPublish(delayedPublish.delay, delayedPublish.publish);
166 }
167
168 for (const iot::mqtt::packets::Publish& immediatePublish : immediatePublishes) {
169 broker->publish(clientId,
170 immediatePublish.getTopic(),
171 immediatePublish.getMessage(),
172 immediatePublish.getQoS(),
173 immediatePublish.getRetain());
174
175 onPublish(immediatePublish);
176 }
177 }
178 }
void publishMessage(const std::string &topic, const std::string &message, uint8_t qoS, bool retain)
void onPublish(const iot::mqtt::packets::Publish &publish) final
Definition Mqtt.cpp:158

References mqtt::lib::MqttMapper::ScheduledPublish::delay, delayedQueue, mqtt::mqttbroker::lib::Mqtt::DelayedQueue::delayPublish(), mqtt::lib::MqttMapper::getMappings(), mqtt::mqttbroker::lib::MqttModel::instance(), mqttMapper, onPublish(), mqtt::lib::MqttMapper::ScheduledPublish::publish, and mqtt::mqttbroker::lib::MqttModel::publishMessage().

Referenced by onPublish(), and mqtt::mqttbroker::lib::Mqtt::DelayedQueue::processDue().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ onSubscribe()

void mqtt::mqttbroker::lib::Mqtt::onSubscribe ( const iot::mqtt::packets::Subscribe & subscribe)
finalprivate

Definition at line 180 of file Mqtt.cpp.

180 {
181 for (const iot::mqtt::Topic& topic : subscribe.getTopics()) {
182 MqttModel::instance().subscribeClient(clientId, topic.getName(), topic.getQoS());
183 }
184 }
void subscribeClient(const std::string &clientId, const std::string &topic, const uint8_t qos)
void subscribe(const std::string &topic, uint8_t qoS)
Definition Mqtt.cpp:144

References mqtt::mqttbroker::lib::MqttModel::instance(), and mqtt::mqttbroker::lib::MqttModel::subscribeClient().

Referenced by subscribe().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ onUnsubscribe()

void mqtt::mqttbroker::lib::Mqtt::onUnsubscribe ( const iot::mqtt::packets::Unsubscribe & unsubscribe)
finalprivate

Definition at line 186 of file Mqtt.cpp.

186 {
187 for (const std::string& topic : unsubscribe.getTopics()) {
188 MqttModel::instance().unsubscribeClient(clientId, topic);
189 }
190 }
void unsubscribeClient(const std::string &clientId, const std::string &topic)
void unsubscribe(const std::string &topic)
Definition Mqtt.cpp:149

References mqtt::mqttbroker::lib::MqttModel::instance(), and mqtt::mqttbroker::lib::MqttModel::unsubscribeClient().

Referenced by unsubscribe().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ subscribe()

void mqtt::mqttbroker::lib::Mqtt::subscribe ( const std::string & topic,
uint8_t qoS )

Definition at line 144 of file Mqtt.cpp.

144 {
145 broker->subscribe(clientId, topic, qoS);
146 onSubscribe(iot::mqtt::packets::Subscribe(0, {{topic, qoS}}));
147 }
void onSubscribe(const iot::mqtt::packets::Subscribe &subscribe) final
Definition Mqtt.cpp:180

References onSubscribe().

Here is the call graph for this function:

◆ unsubscribe()

void mqtt::mqttbroker::lib::Mqtt::unsubscribe ( const std::string & topic)

Definition at line 149 of file Mqtt.cpp.

149 {
150 broker->unsubscribe(clientId, topic);
151 onUnsubscribe(iot::mqtt::packets::Unsubscribe(0, {{topic, 0}}));
152 }
void onUnsubscribe(const iot::mqtt::packets::Unsubscribe &unsubscribe) final
Definition Mqtt.cpp:186

References onUnsubscribe().

Here is the call graph for this function:

Member Data Documentation

◆ delayedQueue

DelayedQueue mqtt::mqttbroker::lib::Mqtt::delayedQueue
private

Definition at line 119 of file Mqtt.h.

Referenced by Mqtt(), and onPublish().

◆ mqttMapper

std::shared_ptr<mqtt::lib::MqttMapper> mqtt::mqttbroker::lib::Mqtt::mqttMapper
private

Definition at line 118 of file Mqtt.h.

Referenced by Mqtt(), and onPublish().


The documentation for this class was generated from the following files: