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 40 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 33 of file Session.cpp.

33 {
34 fromJson(json);
35 }
void fromJson(const nlohmann::json &json)
Definition Session.cpp:67

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

89 {
90 publishMap.clear();
93 }
std::set< uint16_t > publishPacketIdentifierSet
Definition Session.h:63
std::map< uint16_t, iot::mqtt::packets::Publish > publishMap
Definition Session.h:59
std::set< uint16_t > pubrelPacketIdentifierSet
Definition Session.h:60

◆ fromJson()

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

Definition at line 67 of file Session.cpp.

67 {
68 if (json.contains("pubrel_packetidentifier_set")) {
69 pubrelPacketIdentifierSet = static_cast<std::set<uint16_t>>(json["pubrel_packetidentifier_set"]);
70 }
71 if (json.contains("publish_packetidentifier_set")) {
72 publishPacketIdentifierSet = static_cast<std::set<uint16_t>>(json["publish_packetidentifier_set"]);
73 }
74 if (json.contains("publish_map")) {
75 for (const auto& publishJson : json["publish_map"]) {
76 if (publishJson.contains("packet_identifier")) {
77 publishMap.emplace(publishJson["packet_identifier"],
78 iot::mqtt::packets::Publish(publishJson["packet_identifier"],
79 publishJson["topic"],
80 publishJson["message"],
81 publishJson["qos"],
82 publishJson["dup"],
83 publishJson["retain"]));
84 }
85 }
86 }
87 }

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

37 {
38 nlohmann::json json;
39
40 std::vector<nlohmann::json> publishJsonVector;
41 for (const auto& [packetIdentifier, publish] : publishMap) {
42 nlohmann::json publishJson;
43
44 publishJson["packet_identifier"] = packetIdentifier;
45 publishJson["topic"] = publish.getTopic();
46 publishJson["message"] = publish.getMessage();
47 publishJson["dup"] = publish.getDup();
48 publishJson["qos"] = publish.getQoS();
49 publishJson["retain"] = publish.getRetain();
50
51 publishJsonVector.emplace_back(publishJson);
52 }
53
54 if (!publishJsonVector.empty()) {
55 json["publish_map"] = publishJsonVector;
56 }
57 if (!pubrelPacketIdentifierSet.empty()) {
58 json["pubrel_packetidentifier_set"] = pubrelPacketIdentifierSet;
59 }
60 if (!publishPacketIdentifierSet.empty()) {
61 json["publish_packetidentifier_set"] = publishPacketIdentifierSet;
62 }
63
64 return json;
65 }

Friends And Related Symbol Documentation

◆ iot::mqtt::Mqtt

friend class iot::mqtt::Mqtt
friend

Definition at line 65 of file Session.h.

Member Data Documentation

◆ publishMap

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

Definition at line 59 of file Session.h.

◆ publishPacketIdentifierSet

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

Definition at line 63 of file Session.h.

◆ pubrelPacketIdentifierSet

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

Definition at line 60 of file Session.h.


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