SNode.C
Loading...
Searching...
No Matches
iot::mqtt::Mqtt Class Referenceabstract

#include <Mqtt.h>

Inheritance diagram for iot::mqtt::Mqtt:
Collaboration diagram for iot::mqtt::Mqtt:

Public Member Functions

 Mqtt (const std::string &connectionName)
 
 Mqtt (const std::string &connectionName, const std::string &clientId)
 
 Mqtt (Mqtt &&)=delete
 
 Mqtt (const Mqtt &)=delete
 
Mqttoperator= (Mqtt &&)=delete
 
Mqttoperator= (const Mqtt &)=delete
 
virtual ~Mqtt ()
 
virtual void onConnected ()
 
virtual void onDisconnected ()
 
virtual bool onSignal (int sig)=0
 
const std::string & getConnectionName () const
 
const MqttContextgetMqttContext () const
 
void sendPublish (const std::string &topic, const std::string &message, uint8_t qoS, bool retain)
 
void sendPuback (uint16_t packetIdentifier) const
 
void sendPubrec (uint16_t packetIdentifier) const
 
void sendPubrel (uint16_t packetIdentifier) const
 
void sendPubcomp (uint16_t packetIdentifier) const
 

Static Public Member Functions

static std::string toHexString (const std::vector< char > &data)
 
static std::string toHexString (const std::string &data)
 

Protected Member Functions

void initSession (Session *session, utils::Timeval keepAlive)
 
virtual void onPublish (const iot::mqtt::packets::Publish &publish)
 
virtual void onPuback (const iot::mqtt::packets::Puback &puback)
 
virtual void onPubrec (const iot::mqtt::packets::Pubrec &pubrec)
 
virtual void onPubrel (const iot::mqtt::packets::Pubrel &pubrel)
 
virtual void onPubcomp (const iot::mqtt::packets::Pubcomp &pubcomp)
 
bool _onPublish (const iot::mqtt::packets::Publish &publish)
 
void _onPuback (const iot::mqtt::packets::Puback &puback)
 
void _onPubrec (const iot::mqtt::packets::Pubrec &pubrec)
 
void _onPubrel (const iot::mqtt::packets::Pubrel &pubrel)
 
void _onPubcomp (const iot::mqtt::packets::Pubcomp &pubcomp)
 
uint16_t getPacketIdentifier ()
 
void send (const iot::mqtt::ControlPacket &controlPacket) const
 
void printVP (const iot::mqtt::ControlPacket &packet) const
 
void printFixedHeader (const iot::mqtt::FixedHeader &fixedHeader) const
 

Protected Attributes

std::string connectionName
 
std::string clientId
 
MqttContextmqttContext = nullptr
 

Private Member Functions

std::size_t onReceivedFromPeer ()
 
void setMqttContext (MqttContext *mqttContext)
 
virtual iot::mqtt::ControlPacketDeserializercreateControlPacketDeserializer (iot::mqtt::FixedHeader &staticHeader)=0
 
virtual void deliverPacket (iot::mqtt::ControlPacketDeserializer *controlPacketDeserializer)=0
 
void send (const std::vector< char > &data) const
 

Private Attributes

iot::mqtt::FixedHeader fixedHeader
 
iot::mqtt::ControlPacketDeserializercontrolPacketDeserializer = nullptr
 
uint16_t _packetIdentifier = 0
 
core::timer::Timer keepAliveTimer
 
int state = 0
 
Sessionsession = nullptr
 

Friends

class MqttContext
 

Detailed Description

Definition at line 74 of file Mqtt.h.

Constructor & Destructor Documentation

◆ Mqtt() [1/4]

iot::mqtt::Mqtt::Mqtt ( const std::string & connectionName)

Definition at line 69 of file Mqtt.cpp.

71 }
std::string connectionName
Definition Mqtt.h:142

◆ Mqtt() [2/4]

iot::mqtt::Mqtt::Mqtt ( const std::string & connectionName,
const std::string & clientId )

Definition at line 73 of file Mqtt.cpp.

76 }
std::string clientId
Definition Mqtt.h:143

◆ Mqtt() [3/4]

iot::mqtt::Mqtt::Mqtt ( Mqtt && )
delete

◆ Mqtt() [4/4]

iot::mqtt::Mqtt::Mqtt ( const Mqtt & )
delete

◆ ~Mqtt()

iot::mqtt::Mqtt::~Mqtt ( )
virtual

Reimplemented in iot::mqtt::client::Mqtt, and iot::mqtt::server::Mqtt.

Definition at line 78 of file Mqtt.cpp.

78 {
79 if (controlPacketDeserializer != nullptr) {
82 }
83
85 }
void cancel()
Definition Timer.cpp:84
core::timer::Timer keepAliveTimer
Definition Mqtt.h:151
iot::mqtt::ControlPacketDeserializer * controlPacketDeserializer
Definition Mqtt.h:147

Member Function Documentation

◆ _onPuback()

void iot::mqtt::Mqtt::_onPuback ( const iot::mqtt::packets::Puback & puback)
protected

Definition at line 308 of file Mqtt.cpp.

308 {
309 if (puback.getPacketIdentifier() == 0) {
310 LOG(ERROR) << connectionName << " MQTT: PackageIdentifier missing";
311 mqttContext->end(true);
312 } else {
313 LOG(DEBUG) << connectionName << " MQTT: PacketIdentifier: 0x" << std::hex << std::setfill('0') << std::setw(4)
314 << puback.getPacketIdentifier();
315 }
316
317 onPuback(puback);
318 }
virtual void end(bool fatal=false)=0
MqttContext * mqttContext
Definition Mqtt.h:158
virtual void onPuback(const iot::mqtt::packets::Puback &puback)
Definition Mqtt.cpp:256
uint16_t getPacketIdentifier() const
Definition Puback.cpp:66

◆ _onPubcomp()

void iot::mqtt::Mqtt::_onPubcomp ( const iot::mqtt::packets::Pubcomp & pubcomp)
protected

Definition at line 353 of file Mqtt.cpp.

353 {
354 if (pubcomp.getPacketIdentifier() == 0) {
355 LOG(ERROR) << connectionName << " MQTT: PackageIdentifier missing";
356 mqttContext->end(true);
357 } else {
358 LOG(DEBUG) << connectionName << " MQTT: PacketIdentifier: 0x" << std::hex << std::setfill('0') << std::setw(4)
359 << pubcomp.getPacketIdentifier();
360
361 session->publishMap.erase(pubcomp.getPacketIdentifier());
363 }
364
365 onPubcomp(pubcomp);
366 }
virtual void onPubcomp(const iot::mqtt::packets::Pubcomp &pubcomp)
Definition Mqtt.cpp:265
Session * session
Definition Mqtt.h:155
std::map< uint16_t, iot::mqtt::packets::Publish > publishMap
Definition Session.h:81
std::set< uint16_t > pubrelPacketIdentifierSet
Definition Session.h:82
uint16_t getPacketIdentifier() const
Definition Pubcomp.cpp:66

◆ _onPublish()

bool iot::mqtt::Mqtt::_onPublish ( const iot::mqtt::packets::Publish & publish)
protected

Definition at line 268 of file Mqtt.cpp.

268 {
269 bool deliver = true;
270
271 LOG(INFO) << connectionName << " MQTT: Topic: " << publish.getTopic();
272 LOG(INFO) << connectionName << " MQTT: Message:\n" << toHexString(publish.getMessage());
273 LOG(DEBUG) << connectionName << " MQTT: QoS: " << static_cast<uint16_t>(publish.getQoS());
274 LOG(DEBUG) << connectionName << " MQTT: PacketIdentifier: " << publish.getPacketIdentifier();
275 LOG(DEBUG) << connectionName << " MQTT: DUP: " << publish.getDup();
276 LOG(DEBUG) << connectionName << " MQTT: Retain: " << publish.getRetain();
277
278 if (publish.getQoS() > 2) {
279 LOG(ERROR) << connectionName << " MQTT: Received invalid QoS: " << publish.getQoS();
280 mqttContext->end(true);
281 deliver = false;
282 } else if (publish.getPacketIdentifier() == 0 && publish.getQoS() > 0) {
283 LOG(ERROR) << connectionName << " MQTT: Received QoS > 0 but no PackageIdentifier present";
284 mqttContext->end(true);
285 deliver = false;
286 } else {
287 switch (publish.getQoS()) {
288 case 1:
290
291 break;
292 case 2:
294
295 if (session->publishPacketIdentifierSet.contains(publish.getPacketIdentifier())) {
296 deliver = false;
297 } else {
299 }
300
301 break;
302 }
303 }
304
305 return deliver;
306 }
static std::string toHexString(const std::vector< char > &data)
Definition Mqtt.cpp:389
void sendPuback(uint16_t packetIdentifier) const
Definition Mqtt.cpp:237
void sendPubrec(uint16_t packetIdentifier) const
Definition Mqtt.cpp:241
std::set< uint16_t > publishPacketIdentifierSet
Definition Session.h:85
uint8_t getQoS() const
Definition Publish.cpp:85
std::string getTopic() const
Definition Publish.cpp:93
std::string getMessage() const
Definition Publish.cpp:97
uint16_t getPacketIdentifier() const
Definition Publish.cpp:89

◆ _onPubrec()

void iot::mqtt::Mqtt::_onPubrec ( const iot::mqtt::packets::Pubrec & pubrec)
protected

Definition at line 320 of file Mqtt.cpp.

320 {
321 if (pubrec.getPacketIdentifier() == 0) {
322 LOG(ERROR) << connectionName << " MQTT: PackageIdentifier missing";
323 mqttContext->end(true);
324 } else {
325 LOG(DEBUG) << connectionName << " MQTT: PacketIdentifier: 0x" << std::hex << std::setfill('0') << std::setw(4)
326 << pubrec.getPacketIdentifier();
327
328 session->publishMap.erase(pubrec.getPacketIdentifier());
330
332 }
333
334 onPubrec(pubrec);
335 }
void sendPubrel(uint16_t packetIdentifier) const
Definition Mqtt.cpp:245
virtual void onPubrec(const iot::mqtt::packets::Pubrec &pubrec)
Definition Mqtt.cpp:259
uint16_t getPacketIdentifier() const
Definition Pubrec.cpp:66

◆ _onPubrel()

void iot::mqtt::Mqtt::_onPubrel ( const iot::mqtt::packets::Pubrel & pubrel)
protected

Definition at line 337 of file Mqtt.cpp.

337 {
338 if (pubrel.getPacketIdentifier() == 0) {
339 LOG(ERROR) << connectionName << " MQTT: PackageIdentifier missing";
340 mqttContext->end(true);
341 } else {
342 LOG(DEBUG) << connectionName << " MQTT: PacketIdentifier: 0x" << std::hex << std::setfill('0') << std::setw(4)
343 << pubrel.getPacketIdentifier();
344
346
348 }
349
350 onPubrel(pubrel);
351 }
virtual void onPubrel(const iot::mqtt::packets::Pubrel &pubrel)
Definition Mqtt.cpp:262
void sendPubcomp(uint16_t packetIdentifier) const
Definition Mqtt.cpp:249
uint16_t getPacketIdentifier() const
Definition Pubrel.cpp:66

◆ createControlPacketDeserializer()

virtual iot::mqtt::ControlPacketDeserializer * iot::mqtt::Mqtt::createControlPacketDeserializer ( iot::mqtt::FixedHeader & staticHeader)
privatepure virtual

◆ deliverPacket()

virtual void iot::mqtt::Mqtt::deliverPacket ( iot::mqtt::ControlPacketDeserializer * controlPacketDeserializer)
privatepure virtual

◆ getConnectionName()

const std::string & iot::mqtt::Mqtt::getConnectionName ( ) const

Definition at line 170 of file Mqtt.cpp.

170 {
171 return connectionName;
172 }

◆ getMqttContext()

const MqttContext * iot::mqtt::Mqtt::getMqttContext ( ) const

Definition at line 91 of file Mqtt.cpp.

91 {
92 return mqttContext;
93 }

◆ getPacketIdentifier()

uint16_t iot::mqtt::Mqtt::getPacketIdentifier ( )
protected

Definition at line 398 of file Mqtt.cpp.

398 {
400
401 if (_packetIdentifier == 0) {
403 }
404
405 return _packetIdentifier;
406 }
uint16_t _packetIdentifier
Definition Mqtt.h:149

◆ initSession()

void iot::mqtt::Mqtt::initSession ( Session * session,
utils::Timeval keepAlive )
protected

Definition at line 174 of file Mqtt.cpp.

174 {
175 this->session = session;
176
177 for (const auto& [packetIdentifier, publish] : session->publishMap) {
178 LOG(INFO) << connectionName << " MQTT: PUBLISH Resend";
179
180 send(publish);
181 }
182
183 for (const uint16_t packetIdentifier : session->pubrelPacketIdentifierSet) {
184 LOG(INFO) << connectionName << " MQTT: PUBREL Resend";
185
186 send(iot::mqtt::packets::Pubrel(packetIdentifier));
187 }
188
189 if (keepAlive > 0) {
190 keepAlive *= 1.5;
191
192 LOG(INFO) << connectionName << " MQTT: Keep alive initialized with: " << keepAlive;
193
195 [this, keepAlive]() {
196 LOG(ERROR) << connectionName << " MQTT: Keep-alive timer expired. Interval was: " << keepAlive;
198 },
199 keepAlive);
200 }
201
203 }
virtual void setTimeout(const utils::Timeval &timeout)=0
static Timer singleshotTimer(const std::function< void()> &dispatcher, const utils::Timeval &timeout)
Definition Timer.cpp:57
virtual core::socket::stream::SocketConnection * getSocketConnection() const =0
virtual void close()=0
void send(const iot::mqtt::ControlPacket &controlPacket) const
Definition Mqtt.cpp:205

◆ onConnected()

void iot::mqtt::Mqtt::onConnected ( )
virtual

Definition at line 95 of file Mqtt.cpp.

95 {
96 LOG(INFO) << "MQTT: Connected";
97 }

Referenced by iot::mqtt::MqttContext::onConnected().

Here is the caller graph for this function:

◆ onDisconnected()

void iot::mqtt::Mqtt::onDisconnected ( )
virtual

Definition at line 166 of file Mqtt.cpp.

166 {
167 LOG(INFO) << connectionName << " MQTT: Disconnected";
168 }

Referenced by iot::mqtt::MqttContext::onDisconnected().

Here is the caller graph for this function:

◆ onPuback()

void iot::mqtt::Mqtt::onPuback ( const iot::mqtt::packets::Puback & puback)
protectedvirtual

Definition at line 256 of file Mqtt.cpp.

256 {
257 }

◆ onPubcomp()

void iot::mqtt::Mqtt::onPubcomp ( const iot::mqtt::packets::Pubcomp & pubcomp)
protectedvirtual

Definition at line 265 of file Mqtt.cpp.

265 {
266 }

◆ onPublish()

void iot::mqtt::Mqtt::onPublish ( const iot::mqtt::packets::Publish & publish)
protectedvirtual

Definition at line 253 of file Mqtt.cpp.

253 {
254 }

◆ onPubrec()

void iot::mqtt::Mqtt::onPubrec ( const iot::mqtt::packets::Pubrec & pubrec)
protectedvirtual

Definition at line 259 of file Mqtt.cpp.

259 {
260 }

◆ onPubrel()

void iot::mqtt::Mqtt::onPubrel ( const iot::mqtt::packets::Pubrel & pubrel)
protectedvirtual

Definition at line 262 of file Mqtt.cpp.

262 {
263 }

◆ onReceivedFromPeer()

std::size_t iot::mqtt::Mqtt::onReceivedFromPeer ( )
private

Definition at line 99 of file Mqtt.cpp.

99 {
100 std::size_t consumed = 0;
101
102 switch (state) {
103 case 0:
105
106 if (!fixedHeader.isComplete()) {
107 break;
108 }
109 if (fixedHeader.isError()) {
111 break;
112 }
114
116
118
119 if (controlPacketDeserializer == nullptr) {
120 LOG(DEBUG) << connectionName << " MQTT: Received packet-type is unavailable ... closing connection";
121
122 mqttContext->end(true);
123 break;
124 }
126 LOG(DEBUG) << connectionName << " MQTT: Fixed header has error ... closing connection";
127
130
131 mqttContext->end(true);
132 break;
133 }
134
135 state++;
136
137 [[fallthrough]];
138 case 1:
140
142 LOG(DEBUG) << connectionName << " MQTT: Control packet has error ... closing connection";
143 mqttContext->end(true);
144
147
148 state = 0;
151
154
155 state = 0;
156
158 }
159
160 break;
161 }
162
163 return consumed;
164 }
void restart()
Definition Timer.cpp:90
std::size_t deserialize(iot::mqtt::MqttContext *mqttContext)
std::size_t deserialize(iot::mqtt::MqttContext *mqttContext)
iot::mqtt::FixedHeader fixedHeader
Definition Mqtt.h:146
virtual void deliverPacket(iot::mqtt::ControlPacketDeserializer *controlPacketDeserializer)=0
virtual iot::mqtt::ControlPacketDeserializer * createControlPacketDeserializer(iot::mqtt::FixedHeader &staticHeader)=0
void printFixedHeader(const iot::mqtt::FixedHeader &fixedHeader) const
Definition Mqtt.cpp:377

Referenced by iot::mqtt::MqttContext::onReceivedFromPeer().

Here is the caller graph for this function:

◆ onSignal()

virtual bool iot::mqtt::Mqtt::onSignal ( int sig)
pure virtual

Implemented in iot::mqtt::client::Mqtt, and iot::mqtt::server::Mqtt.

Referenced by iot::mqtt::MqttContext::onSignal().

Here is the caller graph for this function:

◆ operator=() [1/2]

Mqtt & iot::mqtt::Mqtt::operator= ( const Mqtt & )
delete

◆ operator=() [2/2]

Mqtt & iot::mqtt::Mqtt::operator= ( Mqtt && )
delete

◆ printFixedHeader()

void iot::mqtt::Mqtt::printFixedHeader ( const iot::mqtt::FixedHeader & fixedHeader) const
protected

Definition at line 377 of file Mqtt.cpp.

377 {
378 LOG(INFO) << connectionName << " MQTT: ======================================================";
379
380 LOG(TRACE) << connectionName << " MQTT: Received data (fixed header):\n" << toHexString(fixedHeader.serialize());
381
382 LOG(DEBUG) << connectionName << " MQTT: Fixed Header: PacketType: 0x" << std::hex << std::setfill('0') << std::setw(2)
383 << static_cast<uint16_t>(fixedHeader.getType()) << " (" << iot::mqtt::mqttPackageName[fixedHeader.getType()] << ")";
384 LOG(DEBUG) << connectionName << " MQTT: PacketFlags: 0x" << std::hex << std::setfill('0') << std::setw(2)
385 << static_cast<uint16_t>(fixedHeader.getFlags()) << std::dec;
386 LOG(DEBUG) << connectionName << " MQTT: RemainingLength: " << fixedHeader.getRemainingLength();
387 }
uint8_t getType() const
uint32_t getRemainingLength() const
uint8_t getFlags() const
std::vector< char > serialize() const
const std::vector< std::string > mqttPackageName

◆ printVP()

void iot::mqtt::Mqtt::printVP ( const iot::mqtt::ControlPacket & packet) const
protected

Definition at line 368 of file Mqtt.cpp.

368 {
369 LOG(INFO) << connectionName << " MQTT: " << packet.getName() << " received: " << clientId;
370
371 const std::string hexString = toHexString(packet.serializeVP());
372 if (!hexString.empty()) {
373 LOG(TRACE) << connectionName << " MQTT: Received data (variable header and payload):\n" << hexString;
374 }
375 }
const std::string & getName() const
virtual std::vector< char > serializeVP() const =0

◆ send() [1/2]

void iot::mqtt::Mqtt::send ( const iot::mqtt::ControlPacket & controlPacket) const
protected

Definition at line 205 of file Mqtt.cpp.

205 {
206 LOG(INFO) << connectionName << " MQTT: " << controlPacket.getName() << " send: " << clientId;
207
208 send(controlPacket.serialize());
209 }
std::vector< char > serialize() const

◆ send() [2/2]

void iot::mqtt::Mqtt::send ( const std::vector< char > & data) const
private

Definition at line 211 of file Mqtt.cpp.

211 {
212 LOG(TRACE) << connectionName << " MQTT: Send data (full message):\n" << toHexString(data);
213
214 mqttContext->send(data.data(), data.size());
215 }
virtual void send(const char *chunk, std::size_t chunklen)=0

◆ sendPuback()

void iot::mqtt::Mqtt::sendPuback ( uint16_t packetIdentifier) const

Definition at line 237 of file Mqtt.cpp.

237 { // Server & Client
238 send(iot::mqtt::packets::Puback(packetIdentifier));
239 }

◆ sendPubcomp()

void iot::mqtt::Mqtt::sendPubcomp ( uint16_t packetIdentifier) const

Definition at line 249 of file Mqtt.cpp.

249 { // Server & Client
250 send(iot::mqtt::packets::Pubcomp(packetIdentifier));
251 }

◆ sendPublish()

void iot::mqtt::Mqtt::sendPublish ( const std::string & topic,
const std::string & message,
uint8_t qoS,
bool retain )

Definition at line 217 of file Mqtt.cpp.

218 { // Server & Client
219
220 uint16_t packageIdentifier = qoS != 0 ? getPacketIdentifier() : 0;
221
222 send(iot::mqtt::packets::Publish(packageIdentifier, topic, message, qoS, false, retain));
223
224 LOG(INFO) << connectionName << " MQTT: Topic: " << topic;
225 LOG(INFO) << connectionName << " MQTT: Message:\n" << toHexString(message);
226 LOG(DEBUG) << connectionName << " MQTT: QoS: " << static_cast<uint16_t>(qoS);
227 LOG(DEBUG) << connectionName << " MQTT: PacketIdentifier: " << _packetIdentifier;
228 LOG(DEBUG) << connectionName << " MQTT: DUP: " << false;
229 LOG(DEBUG) << connectionName << " MQTT: Retain: " << retain;
230
231 if (qoS == 2) {
232 session->publishMap.emplace(packageIdentifier,
233 iot::mqtt::packets::Publish(packageIdentifier, topic, message, qoS, true, retain));
234 }
235 }
uint16_t getPacketIdentifier()
Definition Mqtt.cpp:398

◆ sendPubrec()

void iot::mqtt::Mqtt::sendPubrec ( uint16_t packetIdentifier) const

Definition at line 241 of file Mqtt.cpp.

241 { // Server & Client
242 send(iot::mqtt::packets::Pubrec(packetIdentifier));
243 }

◆ sendPubrel()

void iot::mqtt::Mqtt::sendPubrel ( uint16_t packetIdentifier) const

Definition at line 245 of file Mqtt.cpp.

245 { // Server & Client
246 send(iot::mqtt::packets::Pubrel(packetIdentifier));
247 }

◆ setMqttContext()

void iot::mqtt::Mqtt::setMqttContext ( MqttContext * mqttContext)
private

Definition at line 87 of file Mqtt.cpp.

87 {
89 }

Referenced by iot::mqtt::MqttContext::MqttContext().

Here is the caller graph for this function:

◆ toHexString() [1/2]

std::string iot::mqtt::Mqtt::toHexString ( const std::string & data)
static

Definition at line 394 of file Mqtt.cpp.

394 {
395 return toHexString(std::vector<char>(data.begin(), data.end()));
396 }

◆ toHexString() [2/2]

std::string iot::mqtt::Mqtt::toHexString ( const std::vector< char > & data)
static

Definition at line 389 of file Mqtt.cpp.

389 {
390 const std::string hexDump = utils::hexDump(data, 32);
391 return !hexDump.empty() ? std::string(32, ' ').append(hexDump) : "";
392 }
std::string hexDump(const std::vector< char > &bytes, int prefixLength, bool prefixAtFirstLine)
Definition hexdump.cpp:58

Friends And Related Symbol Documentation

◆ MqttContext

friend class MqttContext
friend

Definition at line 160 of file Mqtt.h.

Member Data Documentation

◆ _packetIdentifier

uint16_t iot::mqtt::Mqtt::_packetIdentifier = 0
private

Definition at line 149 of file Mqtt.h.

◆ clientId

std::string iot::mqtt::Mqtt::clientId
protected

Definition at line 143 of file Mqtt.h.

◆ connectionName

std::string iot::mqtt::Mqtt::connectionName
protected

Definition at line 142 of file Mqtt.h.

◆ controlPacketDeserializer

iot::mqtt::ControlPacketDeserializer* iot::mqtt::Mqtt::controlPacketDeserializer = nullptr
private

Definition at line 147 of file Mqtt.h.

◆ fixedHeader

iot::mqtt::FixedHeader iot::mqtt::Mqtt::fixedHeader
private

Definition at line 146 of file Mqtt.h.

◆ keepAliveTimer

core::timer::Timer iot::mqtt::Mqtt::keepAliveTimer
private

Definition at line 151 of file Mqtt.h.

◆ mqttContext

MqttContext* iot::mqtt::Mqtt::mqttContext = nullptr
protected

Definition at line 158 of file Mqtt.h.

◆ session

Session* iot::mqtt::Mqtt::session = nullptr
private

Definition at line 155 of file Mqtt.h.

◆ state

int iot::mqtt::Mqtt::state = 0
private

Definition at line 153 of file Mqtt.h.


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