SNode.C
Loading...
Searching...
No Matches
iot::mqtt::Session Class Reference

#include <Session.h>

Inheritance diagram for iot::mqtt::Session:
Collaboration diagram for iot::mqtt::Session:

Public Member Functions

 Session ()=default
 Session (const nlohmann::json &json)
virtual ~Session ()=default
 Session (const Session &)=default
Sessionoperator= (const Session &)=default
virtual nlohmann::json toJson () const
void fromJson (const nlohmann::json &json)
void clear ()

Private Attributes

std::map< uint16_t, iot::mqtt::packets::PublishoutgoingPublishMap
std::set< uint16_t > pubrelPacketIdentifierSet
std::map< uint16_t, iot::mqtt::packets::PublishincomingPublishMap
std::set< uint16_t > pubcompPacketIdentifierSet

Friends

class iot::mqtt::Mqtt

Detailed Description

Definition at line 62 of file Session.h.

Constructor & Destructor Documentation

◆ Session() [1/3]

iot::mqtt::Session::Session ( )
default

◆ Session() [2/3]

iot::mqtt::Session::Session ( const nlohmann::json & json)
explicit

Definition at line 55 of file Session.cpp.

55 {
56 fromJson(json);
57 }
void fromJson(const nlohmann::json &json)
Definition Session.cpp:108

References fromJson().

Here is the call graph for this function:

◆ ~Session()

virtual iot::mqtt::Session::~Session ( )
virtualdefault

◆ Session() [3/3]

iot::mqtt::Session::Session ( const Session & )
default

Member Function Documentation

◆ clear()

void iot::mqtt::Session::clear ( )

Definition at line 146 of file Session.cpp.

146 {
147 outgoingPublishMap.clear();
149 incomingPublishMap.clear();
151 }
std::map< uint16_t, iot::mqtt::packets::Publish > outgoingPublishMap
Definition Session.h:79
std::map< uint16_t, iot::mqtt::packets::Publish > incomingPublishMap
Definition Session.h:83
std::set< uint16_t > pubcompPacketIdentifierSet
Definition Session.h:84
std::set< uint16_t > pubrelPacketIdentifierSet
Definition Session.h:80

References incomingPublishMap, outgoingPublishMap, pubcompPacketIdentifierSet, and pubrelPacketIdentifierSet.

Referenced by iot::mqtt::client::Mqtt::Mqtt().

Here is the caller graph for this function:

◆ fromJson()

void iot::mqtt::Session::fromJson ( const nlohmann::json & json)

Definition at line 108 of file Session.cpp.

108 {
109 if (json.contains("pubrel_packetidentifier_set")) {
110 pubrelPacketIdentifierSet = static_cast<std::set<uint16_t>>(json["pubrel_packetidentifier_set"]);
111 }
112 if (json.contains("publish_map")) {
113 for (const auto& publishJson : json["publish_map"]) {
114 if (publishJson.contains("packet_identifier")) {
115 outgoingPublishMap.emplace(publishJson["packet_identifier"],
116 iot::mqtt::packets::Publish(publishJson["packet_identifier"],
117 publishJson["topic"],
118 publishJson["message"],
119 publishJson["qos"],
120 publishJson["dup"],
121 publishJson["retain"]));
122 }
123 }
124 }
125
126 // QoS 2 inbound state (receiver side)
127 if (json.contains("pubcomp_packetidentifier_set")) {
128 pubcompPacketIdentifierSet = static_cast<std::set<uint16_t>>(json["pubcomp_packetidentifier_set"]);
129 }
130
131 if (json.contains("incoming_publish_map")) {
132 for (const auto& publishJson : json["incoming_publish_map"]) {
133 if (publishJson.contains("packet_identifier")) {
134 incomingPublishMap.emplace(publishJson["packet_identifier"],
135 iot::mqtt::packets::Publish(publishJson["packet_identifier"],
136 publishJson["topic"],
137 publishJson["message"],
138 publishJson["qos"],
139 publishJson["dup"],
140 publishJson["retain"]));
141 }
142 }
143 }
144 }

References incomingPublishMap, outgoingPublishMap, pubcompPacketIdentifierSet, iot::mqtt::packets::Publish::Publish(), and pubrelPacketIdentifierSet.

Referenced by iot::mqtt::server::broker::Session::fromJson(), iot::mqtt::client::Mqtt::Mqtt(), and Session().

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

◆ operator=()

Session & iot::mqtt::Session::operator= ( const Session & )
default

◆ toJson()

nlohmann::json iot::mqtt::Session::toJson ( ) const
virtual

Reimplemented in iot::mqtt::server::broker::Session.

Definition at line 59 of file Session.cpp.

59 {
60 nlohmann::json json;
61
62 std::vector<nlohmann::json> publishJsonVector;
63 for (const auto& [packetIdentifier, publish] : outgoingPublishMap) {
64 nlohmann::json publishJson;
65
66 publishJson["packet_identifier"] = packetIdentifier;
67 publishJson["topic"] = publish.getTopic();
68 publishJson["message"] = publish.getMessage();
69 publishJson["dup"] = publish.getDup();
70 publishJson["qos"] = publish.getQoS();
71 publishJson["retain"] = publish.getRetain();
72
73 publishJsonVector.emplace_back(publishJson);
74 }
75
76 if (!publishJsonVector.empty()) {
77 json["publish_map"] = publishJsonVector;
78 }
79 if (!pubrelPacketIdentifierSet.empty()) {
80 json["pubrel_packetidentifier_set"] = pubrelPacketIdentifierSet;
81 }
82
83 // QoS 2 inbound state (receiver side)
84 std::vector<nlohmann::json> incomingPublishJsonVector;
85 for (const auto& [packetIdentifier, publish] : incomingPublishMap) {
86 nlohmann::json publishJson;
87
88 publishJson["packet_identifier"] = packetIdentifier;
89 publishJson["topic"] = publish.getTopic();
90 publishJson["message"] = publish.getMessage();
91 publishJson["dup"] = publish.getDup();
92 publishJson["qos"] = publish.getQoS();
93 publishJson["retain"] = publish.getRetain();
94
95 incomingPublishJsonVector.emplace_back(publishJson);
96 }
97
98 if (!incomingPublishJsonVector.empty()) {
99 json["incoming_publish_map"] = incomingPublishJsonVector;
100 }
101 if (!pubcompPacketIdentifierSet.empty()) {
102 json["pubcomp_packetidentifier_set"] = pubcompPacketIdentifierSet;
103 }
104
105 return json;
106 }

References iot::mqtt::packets::Publish::getDup(), iot::mqtt::packets::Publish::getMessage(), iot::mqtt::packets::Publish::getQoS(), iot::mqtt::packets::Publish::getRetain(), iot::mqtt::packets::Publish::getTopic(), incomingPublishMap, outgoingPublishMap, pubcompPacketIdentifierSet, and pubrelPacketIdentifierSet.

Referenced by iot::mqtt::server::broker::Session::toJson(), and iot::mqtt::client::Mqtt::~Mqtt().

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

◆ iot::mqtt::Mqtt

friend class iot::mqtt::Mqtt
friend

Definition at line 86 of file Session.h.

Member Data Documentation

◆ incomingPublishMap

std::map<uint16_t, iot::mqtt::packets::Publish> iot::mqtt::Session::incomingPublishMap
private

◆ outgoingPublishMap

◆ pubcompPacketIdentifierSet

std::set<uint16_t> iot::mqtt::Session::pubcompPacketIdentifierSet
private

◆ pubrelPacketIdentifierSet

std::set<uint16_t> iot::mqtt::Session::pubrelPacketIdentifierSet
private

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