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
 
bool isCleanSession () const
 
virtual nlohmann::json toJson () const
 
void fromJson (const nlohmann::json &json)
 
void clear ()
 

Private Attributes

std::map< uint16_t, iot::mqtt::packets::PublishpublishMap
 
std::set< uint16_t > pubrelPacketIdentifierSet
 
std::set< uint16_t > publishPacketIdentifierSet
 

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

◆ ~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 111 of file Session.cpp.

111 {
112 publishMap.clear();
115 }
std::set< uint16_t > publishPacketIdentifierSet
Definition Session.h:85
std::map< uint16_t, iot::mqtt::packets::Publish > publishMap
Definition Session.h:81
std::set< uint16_t > pubrelPacketIdentifierSet
Definition Session.h:82

◆ fromJson()

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

Definition at line 89 of file Session.cpp.

89 {
90 if (json.contains("pubrel_packetidentifier_set")) {
91 pubrelPacketIdentifierSet = static_cast<std::set<uint16_t>>(json["pubrel_packetidentifier_set"]);
92 }
93 if (json.contains("publish_packetidentifier_set")) {
94 publishPacketIdentifierSet = static_cast<std::set<uint16_t>>(json["publish_packetidentifier_set"]);
95 }
96 if (json.contains("publish_map")) {
97 for (const auto& publishJson : json["publish_map"]) {
98 if (publishJson.contains("packet_identifier")) {
99 publishMap.emplace(publishJson["packet_identifier"],
100 iot::mqtt::packets::Publish(publishJson["packet_identifier"],
101 publishJson["topic"],
102 publishJson["message"],
103 publishJson["qos"],
104 publishJson["dup"],
105 publishJson["retain"]));
106 }
107 }
108 }
109 }

◆ isCleanSession()

bool iot::mqtt::Session::isCleanSession ( ) const

◆ 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] : publishMap) {
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 if (!publishPacketIdentifierSet.empty()) {
83 json["publish_packetidentifier_set"] = publishPacketIdentifierSet;
84 }
85
86 return json;
87 }

Friends And Related Symbol Documentation

◆ iot::mqtt::Mqtt

friend class iot::mqtt::Mqtt
friend

Definition at line 87 of file Session.h.

Member Data Documentation

◆ publishMap

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

Definition at line 81 of file Session.h.

◆ publishPacketIdentifierSet

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

Definition at line 85 of file Session.h.

◆ pubrelPacketIdentifierSet

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

Definition at line 82 of file Session.h.


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