2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
20#ifndef IOT_MQTT_SERVER_SOCKETCONTEXT_H
21#define IOT_MQTT_SERVER_SOCKETCONTEXT_H
23#include "iot/mqtt/Mqtt.h"
54#ifndef DOXYGEN_SHOULD_SKIP_THIS
63namespace iot::mqtt::server {
65 class Mqtt :
public iot::mqtt::Mqtt {
67 using Super = iot::mqtt::Mqtt;
70 explicit Mqtt(
const std::string& connectionName,
const std::shared_ptr<
broker::
Broker>& broker);
75 iot::mqtt::ControlPacketDeserializer* createControlPacketDeserializer(iot::mqtt::FixedHeader& fixedHeader)
final;
76 void deliverPacket(iot::mqtt::ControlPacketDeserializer* controlPacketDeserializer)
override;
82 using Super::initSession;
83 bool initSession(
const utils::Timeval& keepAlive);
86 virtual void onConnect(
const iot::mqtt::
packets::Connect& connect);
87 virtual void onSubscribe(
const iot::mqtt::
packets::Subscribe& subscribe);
88 virtual void onUnsubscribe(
const iot::mqtt::
packets::Unsubscribe& unsubscribe);
89 virtual void onPingreq(
const iot::mqtt::
packets::Pingreq& pingreq);
90 virtual void onDisconnect(
const iot::mqtt::
packets::Disconnect& disconnect);
92 void _onConnect(
const iot::mqtt::server::
packets::Connect& connect);
93 void _onPublish(
const iot::mqtt::server::
packets::Publish& publish);
94 void _onSubscribe(
const iot::mqtt::server::
packets::Subscribe& subscribe);
95 void _onUnsubscribe(
const iot::mqtt::server::
packets::Unsubscribe& unsubscribe);
96 void _onPingreq(
const iot::mqtt::server::
packets::Pingreq& pingreq);
97 void _onDisconnect(
const iot::mqtt::server::
packets::Disconnect& disconnect);
100 void sendConnack(uint8_t returnCode, uint8_t flags)
const;
101 void sendSuback(uint16_t packetIdentifier,
const std::list<uint8_t>& returnCodes)
const;
143 friend class iot::mqtt::server::
packets::Connect;
144 friend class iot::mqtt::server::
packets::Subscribe;
145 friend class iot::mqtt::server::
packets::Unsubscribe;
146 friend class iot::mqtt::server::
packets::Pingreq;
147 friend class iot::mqtt::server::
packets::Disconnect;
148 friend class iot::mqtt::server::
packets::Publish;
149 friend class iot::mqtt::server::
packets::Pubcomp;
150 friend class iot::mqtt::server::
packets::Pubrec;
151 friend class iot::mqtt::server::
packets::Puback;
152 friend class iot::mqtt::server::
packets::Pubrel;
std::shared_ptr< iot::mqtt::server::broker::Broker > broker
bool getPasswordFlag() const
void sendSuback(uint16_t packetIdentifier, const std::list< uint8_t > &returnCodes) const
bool getCleanSession() const
bool onSignal(int sig) override
uint8_t getConnectFlags() const
uint16_t getKeepAlive() const
bool getWillRetain() const
std::string getProtocol() const
bool getUsernameFlag() const
std::string getWillMessage() const
void sendPingresp() const
void sendConnack(uint8_t returnCode, uint8_t flags) const
std::string getClientId() const
uint8_t getWillQoS() const
std::string getWillTopic() const
void sendUnsuback(uint16_t packetIdentifier) const
std::string getUsername() const
std::string getPassword() const
bool getOriginRetain() const
void sendPublish(iot::mqtt::server::broker::Message &message, uint8_t qoS, bool retain)
nlohmann::json toJson() const final
Session(iot::mqtt::server::Mqtt *mqtt)
void fromJson(const nlohmann::json &json)
Session * renew(iot::mqtt::server::Mqtt *mqtt)
bool isOwnedBy(const iot::mqtt::server::Mqtt *mqtt) const