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 52 of file Mqtt.h.

Constructor & Destructor Documentation

◆ Mqtt() [1/4]

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

Definition at line 47 of file Mqtt.cpp.

49 }
std::string connectionName
Definition Mqtt.h:120

◆ Mqtt() [2/4]

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

Definition at line 51 of file Mqtt.cpp.

54 }
std::string clientId
Definition Mqtt.h:121

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

56 {
57 if (controlPacketDeserializer != nullptr) {
60 }
61
63 }
void cancel()
Definition Timer.cpp:62
core::timer::Timer keepAliveTimer
Definition Mqtt.h:129
iot::mqtt::ControlPacketDeserializer * controlPacketDeserializer
Definition Mqtt.h:125

Member Function Documentation

◆ _onPuback()

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

Definition at line 286 of file Mqtt.cpp.

286 {
287 if (puback.getPacketIdentifier() == 0) {
288 LOG(ERROR) << connectionName << " MQTT: PackageIdentifier missing";
289 mqttContext->end(true);
290 } else {
291 LOG(DEBUG) << connectionName << " MQTT: PacketIdentifier: 0x" << std::hex << std::setfill('0') << std::setw(4)
292 << puback.getPacketIdentifier();
293 }
294
295 onPuback(puback);
296 }
virtual void end(bool fatal=false)=0
MqttContext * mqttContext
Definition Mqtt.h:136
virtual void onPuback(const iot::mqtt::packets::Puback &puback)
Definition Mqtt.cpp:234
uint16_t getPacketIdentifier() const
Definition Puback.cpp:44

◆ _onPubcomp()

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

Definition at line 331 of file Mqtt.cpp.

331 {
332 if (pubcomp.getPacketIdentifier() == 0) {
333 LOG(ERROR) << connectionName << " MQTT: PackageIdentifier missing";
334 mqttContext->end(true);
335 } else {
336 LOG(DEBUG) << connectionName << " MQTT: PacketIdentifier: 0x" << std::hex << std::setfill('0') << std::setw(4)
337 << pubcomp.getPacketIdentifier();
338
339 session->publishMap.erase(pubcomp.getPacketIdentifier());
341 }
342
343 onPubcomp(pubcomp);
344 }
virtual void onPubcomp(const iot::mqtt::packets::Pubcomp &pubcomp)
Definition Mqtt.cpp:243
Session * session
Definition Mqtt.h:133
std::map< uint16_t, iot::mqtt::packets::Publish > publishMap
Definition Session.h:59
std::set< uint16_t > pubrelPacketIdentifierSet
Definition Session.h:60
uint16_t getPacketIdentifier() const
Definition Pubcomp.cpp:44

◆ _onPublish()

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

Definition at line 246 of file Mqtt.cpp.

246 {
247 bool deliver = true;
248
249 LOG(INFO) << connectionName << " MQTT: Topic: " << publish.getTopic();
250 LOG(INFO) << connectionName << " MQTT: Message:\n" << toHexString(publish.getMessage());
251 LOG(DEBUG) << connectionName << " MQTT: QoS: " << static_cast<uint16_t>(publish.getQoS());
252 LOG(DEBUG) << connectionName << " MQTT: PacketIdentifier: " << publish.getPacketIdentifier();
253 LOG(DEBUG) << connectionName << " MQTT: DUP: " << publish.getDup();
254 LOG(DEBUG) << connectionName << " MQTT: Retain: " << publish.getRetain();
255
256 if (publish.getQoS() > 2) {
257 LOG(ERROR) << connectionName << " MQTT: Received invalid QoS: " << publish.getQoS();
258 mqttContext->end(true);
259 deliver = false;
260 } else if (publish.getPacketIdentifier() == 0 && publish.getQoS() > 0) {
261 LOG(ERROR) << connectionName << " MQTT: Received QoS > 0 but no PackageIdentifier present";
262 mqttContext->end(true);
263 deliver = false;
264 } else {
265 switch (publish.getQoS()) {
266 case 1:
268
269 break;
270 case 2:
272
273 if (session->publishPacketIdentifierSet.contains(publish.getPacketIdentifier())) {
274 deliver = false;
275 } else {
277 }
278
279 break;
280 }
281 }
282
283 return deliver;
284 }
static std::string toHexString(const std::vector< char > &data)
Definition Mqtt.cpp:367
void sendPuback(uint16_t packetIdentifier) const
Definition Mqtt.cpp:215
void sendPubrec(uint16_t packetIdentifier) const
Definition Mqtt.cpp:219
std::set< uint16_t > publishPacketIdentifierSet
Definition Session.h:63
uint8_t getQoS() const
Definition Publish.cpp:63
std::string getTopic() const
Definition Publish.cpp:71
std::string getMessage() const
Definition Publish.cpp:75
uint16_t getPacketIdentifier() const
Definition Publish.cpp:67

◆ _onPubrec()

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

Definition at line 298 of file Mqtt.cpp.

298 {
299 if (pubrec.getPacketIdentifier() == 0) {
300 LOG(ERROR) << connectionName << " MQTT: PackageIdentifier missing";
301 mqttContext->end(true);
302 } else {
303 LOG(DEBUG) << connectionName << " MQTT: PacketIdentifier: 0x" << std::hex << std::setfill('0') << std::setw(4)
304 << pubrec.getPacketIdentifier();
305
306 session->publishMap.erase(pubrec.getPacketIdentifier());
308
310 }
311
312 onPubrec(pubrec);
313 }
void sendPubrel(uint16_t packetIdentifier) const
Definition Mqtt.cpp:223
virtual void onPubrec(const iot::mqtt::packets::Pubrec &pubrec)
Definition Mqtt.cpp:237
uint16_t getPacketIdentifier() const
Definition Pubrec.cpp:44

◆ _onPubrel()

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

Definition at line 315 of file Mqtt.cpp.

315 {
316 if (pubrel.getPacketIdentifier() == 0) {
317 LOG(ERROR) << connectionName << " MQTT: PackageIdentifier missing";
318 mqttContext->end(true);
319 } else {
320 LOG(DEBUG) << connectionName << " MQTT: PacketIdentifier: 0x" << std::hex << std::setfill('0') << std::setw(4)
321 << pubrel.getPacketIdentifier();
322
324
326 }
327
328 onPubrel(pubrel);
329 }
virtual void onPubrel(const iot::mqtt::packets::Pubrel &pubrel)
Definition Mqtt.cpp:240
void sendPubcomp(uint16_t packetIdentifier) const
Definition Mqtt.cpp:227
uint16_t getPacketIdentifier() const
Definition Pubrel.cpp:44

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

148 {
149 return connectionName;
150 }

◆ getMqttContext()

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

Definition at line 69 of file Mqtt.cpp.

69 {
70 return mqttContext;
71 }

◆ getPacketIdentifier()

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

Definition at line 376 of file Mqtt.cpp.

376 {
378
379 if (_packetIdentifier == 0) {
381 }
382
383 return _packetIdentifier;
384 }
uint16_t _packetIdentifier
Definition Mqtt.h:127

◆ initSession()

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

Definition at line 152 of file Mqtt.cpp.

152 {
153 this->session = session;
154
155 for (const auto& [packetIdentifier, publish] : session->publishMap) {
156 LOG(INFO) << connectionName << " MQTT: PUBLISH Resend";
157
158 send(publish);
159 }
160
161 for (const uint16_t packetIdentifier : session->pubrelPacketIdentifierSet) {
162 LOG(INFO) << connectionName << " MQTT: PUBREL Resend";
163
164 send(iot::mqtt::packets::Pubrel(packetIdentifier));
165 }
166
167 if (keepAlive > 0) {
168 keepAlive *= 1.5;
169
170 LOG(INFO) << connectionName << " MQTT: Keep alive initialized with: " << keepAlive;
171
173 [this, keepAlive]() {
174 LOG(ERROR) << connectionName << " MQTT: Keep-alive timer expired. Interval was: " << keepAlive;
176 },
177 keepAlive);
178 }
179
181 }
virtual void setTimeout(const utils::Timeval &timeout)=0
static Timer singleshotTimer(const std::function< void()> &dispatcher, const utils::Timeval &timeout)
Definition Timer.cpp:35
virtual core::socket::stream::SocketConnection * getSocketConnection() const =0
virtual void close()=0
void send(const iot::mqtt::ControlPacket &controlPacket) const
Definition Mqtt.cpp:183

◆ onConnected()

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

Definition at line 73 of file Mqtt.cpp.

73 {
74 LOG(INFO) << "MQTT: Connected";
75 }

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

Here is the caller graph for this function:

◆ onDisconnected()

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

Definition at line 144 of file Mqtt.cpp.

144 {
145 LOG(INFO) << connectionName << " MQTT: Disconnected";
146 }

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

234 {
235 }

◆ onPubcomp()

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

Definition at line 243 of file Mqtt.cpp.

243 {
244 }

◆ onPublish()

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

Definition at line 231 of file Mqtt.cpp.

231 {
232 }

◆ onPubrec()

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

Definition at line 237 of file Mqtt.cpp.

237 {
238 }

◆ onPubrel()

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

Definition at line 240 of file Mqtt.cpp.

240 {
241 }

◆ onReceivedFromPeer()

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

Definition at line 77 of file Mqtt.cpp.

77 {
78 std::size_t consumed = 0;
79
80 switch (state) {
81 case 0:
83
84 if (!fixedHeader.isComplete()) {
85 break;
86 }
87 if (fixedHeader.isError()) {
89 break;
90 }
92
94
96
97 if (controlPacketDeserializer == nullptr) {
98 LOG(DEBUG) << connectionName << " MQTT: Received packet-type is unavailable ... closing connection";
99
100 mqttContext->end(true);
101 break;
102 }
104 LOG(DEBUG) << connectionName << " MQTT: Fixed header has error ... closing connection";
105
108
109 mqttContext->end(true);
110 break;
111 }
112
113 state++;
114
115 [[fallthrough]];
116 case 1:
118
120 LOG(DEBUG) << connectionName << " MQTT: Control packet has error ... closing connection";
121 mqttContext->end(true);
122
125
126 state = 0;
129
132
133 state = 0;
134
136 }
137
138 break;
139 }
140
141 return consumed;
142 }
void restart()
Definition Timer.cpp:68
std::size_t deserialize(iot::mqtt::MqttContext *mqttContext)
std::size_t deserialize(iot::mqtt::MqttContext *mqttContext)
iot::mqtt::FixedHeader fixedHeader
Definition Mqtt.h:124
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:355

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

355 {
356 LOG(INFO) << connectionName << " MQTT: ======================================================";
357
358 LOG(TRACE) << connectionName << " MQTT: Received data (fixed header):\n" << toHexString(fixedHeader.serialize());
359
360 LOG(DEBUG) << connectionName << " MQTT: Fixed Header: PacketType: 0x" << std::hex << std::setfill('0') << std::setw(2)
361 << static_cast<uint16_t>(fixedHeader.getType()) << " (" << iot::mqtt::mqttPackageName[fixedHeader.getType()] << ")";
362 LOG(DEBUG) << connectionName << " MQTT: PacketFlags: 0x" << std::hex << std::setfill('0') << std::setw(2)
363 << static_cast<uint16_t>(fixedHeader.getFlags()) << std::dec;
364 LOG(DEBUG) << connectionName << " MQTT: RemainingLength: " << fixedHeader.getRemainingLength();
365 }
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 346 of file Mqtt.cpp.

346 {
347 LOG(INFO) << connectionName << " MQTT: " << packet.getName() << " received: " << clientId;
348
349 const std::string hexString = toHexString(packet.serializeVP());
350 if (!hexString.empty()) {
351 LOG(TRACE) << connectionName << " MQTT: Received data (variable header and payload):\n" << hexString;
352 }
353 }
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 183 of file Mqtt.cpp.

183 {
184 LOG(INFO) << connectionName << " MQTT: " << controlPacket.getName() << " send: " << clientId;
185
186 send(controlPacket.serialize());
187 }
std::vector< char > serialize() const

◆ send() [2/2]

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

Definition at line 189 of file Mqtt.cpp.

189 {
190 LOG(TRACE) << connectionName << " MQTT: Send data (full message):\n" << toHexString(data);
191
192 mqttContext->send(data.data(), data.size());
193 }
virtual void send(const char *chunk, std::size_t chunklen)=0

◆ sendPuback()

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

Definition at line 215 of file Mqtt.cpp.

215 { // Server & Client
216 send(iot::mqtt::packets::Puback(packetIdentifier));
217 }

◆ sendPubcomp()

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

Definition at line 227 of file Mqtt.cpp.

227 { // Server & Client
228 send(iot::mqtt::packets::Pubcomp(packetIdentifier));
229 }

◆ sendPublish()

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

Definition at line 195 of file Mqtt.cpp.

196 { // Server & Client
197
198 uint16_t packageIdentifier = qoS != 0 ? getPacketIdentifier() : 0;
199
200 send(iot::mqtt::packets::Publish(packageIdentifier, topic, message, qoS, false, retain));
201
202 LOG(INFO) << connectionName << " MQTT: Topic: " << topic;
203 LOG(INFO) << connectionName << " MQTT: Message:\n" << toHexString(message);
204 LOG(DEBUG) << connectionName << " MQTT: QoS: " << static_cast<uint16_t>(qoS);
205 LOG(DEBUG) << connectionName << " MQTT: PacketIdentifier: " << _packetIdentifier;
206 LOG(DEBUG) << connectionName << " MQTT: DUP: " << false;
207 LOG(DEBUG) << connectionName << " MQTT: Retain: " << retain;
208
209 if (qoS == 2) {
210 session->publishMap.emplace(packageIdentifier,
211 iot::mqtt::packets::Publish(packageIdentifier, topic, message, qoS, true, retain));
212 }
213 }
uint16_t getPacketIdentifier()
Definition Mqtt.cpp:376

◆ sendPubrec()

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

Definition at line 219 of file Mqtt.cpp.

219 { // Server & Client
220 send(iot::mqtt::packets::Pubrec(packetIdentifier));
221 }

◆ sendPubrel()

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

Definition at line 223 of file Mqtt.cpp.

223 { // Server & Client
224 send(iot::mqtt::packets::Pubrel(packetIdentifier));
225 }

◆ setMqttContext()

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

Definition at line 65 of file Mqtt.cpp.

65 {
67 }

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

372 {
373 return toHexString(std::vector<char>(data.begin(), data.end()));
374 }

◆ toHexString() [2/2]

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

Definition at line 367 of file Mqtt.cpp.

367 {
368 const std::string hexDump = utils::hexDump(data, 32);
369 return !hexDump.empty() ? std::string(32, ' ').append(hexDump) : "";
370 }
std::string hexDump(const std::vector< char > &bytes, int prefixLength, bool prefixAtFirstLine)
Definition hexdump.cpp:36

Friends And Related Symbol Documentation

◆ MqttContext

friend class MqttContext
friend

Definition at line 138 of file Mqtt.h.

Member Data Documentation

◆ _packetIdentifier

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

Definition at line 127 of file Mqtt.h.

◆ clientId

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

Definition at line 121 of file Mqtt.h.

◆ connectionName

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

Definition at line 120 of file Mqtt.h.

◆ controlPacketDeserializer

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

Definition at line 125 of file Mqtt.h.

◆ fixedHeader

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

Definition at line 124 of file Mqtt.h.

◆ keepAliveTimer

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

Definition at line 129 of file Mqtt.h.

◆ mqttContext

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

Definition at line 136 of file Mqtt.h.

◆ session

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

Definition at line 133 of file Mqtt.h.

◆ state

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

Definition at line 131 of file Mqtt.h.


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