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().

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 189 of file Mqtt.cpp.

189 {
191 }
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 mqtt::lib::MqttMapper::MappedPublishes mappedPublishes = mqttMapper->getMappings(publish);
163
164 for (const mqtt::lib::MqttMapper::ScheduledPublish& delayedPublish : mappedPublishes.second) {
165 delayedQueue.delayPublish(delayedPublish.delay, delayedPublish.publish);
166 }
167
168 for (const iot::mqtt::packets::Publish& mappedPublish : mappedPublishes.first) {
169 broker->publish(
170 clientId, mappedPublish.getTopic(), mappedPublish.getMessage(), mappedPublish.getQoS(), mappedPublish.getRetain());
171
172 onPublish(mappedPublish);
173 }
174 }
175 }
std::pair< std::vector< iot::mqtt::packets::Publish >, std::vector< ScheduledPublish > > MappedPublishes
Definition MqttMapper.h:83
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
iot::mqtt::packets::Publish publish
Definition MqttMapper.h:80

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 177 of file Mqtt.cpp.

177 {
178 for (const iot::mqtt::Topic& topic : subscribe.getTopics()) {
179 MqttModel::instance().subscribeClient(clientId, topic.getName(), topic.getQoS());
180 }
181 }
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 183 of file Mqtt.cpp.

183 {
184 for (const std::string& topic : unsubscribe.getTopics()) {
185 MqttModel::instance().unsubscribeClient(clientId, topic);
186 }
187 }
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:177

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:183

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: