SNode.C
Loading...
Searching...
No Matches
iot::mqtt::server::packets::Subscribe Class Reference

#include <Subscribe.h>

Inheritance diagram for iot::mqtt::server::packets::Subscribe:
Collaboration diagram for iot::mqtt::server::packets::Subscribe:

Public Member Functions

 Subscribe (uint32_t remainingLength, uint8_t flags)
Public Member Functions inherited from iot::mqtt::packets::Subscribe
 Subscribe ()
 Subscribe (uint16_t packetIdentifier, const std::list< iot::mqtt::Topic > &topics)
uint16_t getPacketIdentifier () const
const std::list< iot::mqtt::Topic > & getTopics () const
Public Member Functions inherited from iot::mqtt::ControlPacket
 ControlPacket (uint8_t type, const std::string &name)
 ControlPacket (const ControlPacket &)=default
 ControlPacket (ControlPacket &&)=default
virtual ~ControlPacket ()
ControlPacketoperator= (const ControlPacket &)=default
ControlPacketoperator= (ControlPacket &&)=default
std::vector< char > serialize () const
const std::string & getName () const
Public Member Functions inherited from iot::mqtt::server::ControlPacketDeserializer
 ~ControlPacketDeserializer () override
 ControlPacketDeserializer ()=default
 ControlPacketDeserializer (uint32_t remainingLength, uint8_t flags, uint8_t mustFlags)
Public Member Functions inherited from iot::mqtt::ControlPacketDeserializer
 ControlPacketDeserializer ()=default
 ControlPacketDeserializer (uint32_t remainingLength, uint8_t flags, uint8_t mustFlags)
ControlPacketDeserializeroperator= (const ControlPacketDeserializer &)=default
std::size_t deserialize (iot::mqtt::MqttContext *mqttContext)
uint32_t getRemainingLength () const
bool isComplete () const
bool isError () const
std::size_t getConsumed () const

Private Member Functions

std::size_t deserializeVP (iot::mqtt::MqttContext *mqttContext) override
void deliverPacket (iot::mqtt::server::Mqtt *mqtt) override

Private Attributes

iot::mqtt::types::String topic
iot::mqtt::types::UInt8 qoS
int state = 0

Additional Inherited Members

Protected Member Functions inherited from iot::mqtt::ControlPacket
uint8_t getType () const
uint8_t getFlags () const
Protected Attributes inherited from iot::mqtt::packets::Subscribe
iot::mqtt::types::UInt16 packetIdentifier
std::list< iot::mqtt::Topictopics
Protected Attributes inherited from iot::mqtt::ControlPacket
uint8_t flags = 0
Protected Attributes inherited from iot::mqtt::ControlPacketDeserializer
bool complete = false
bool error = false
uint32_t remainingLength = 0
std::size_t consumed = 0

Detailed Description

Definition at line 56 of file Subscribe.h.

Constructor & Destructor Documentation

◆ Subscribe()

iot::mqtt::server::packets::Subscribe::Subscribe ( uint32_t remainingLength,
uint8_t flags )

Definition at line 54 of file Subscribe.cpp.

55 : iot::mqtt::server::ControlPacketDeserializer(remainingLength, flags, MQTT_SUBSCRIBE_FLAGS) {
56 this->flags = flags;
57 }
#define MQTT_SUBSCRIBE_FLAGS

References iot::mqtt::ControlPacket::flags.

Referenced by iot::mqtt::server::Mqtt::createControlPacketDeserializer().

Here is the caller graph for this function:

Member Function Documentation

◆ deliverPacket()

void iot::mqtt::server::packets::Subscribe::deliverPacket ( iot::mqtt::server::Mqtt * mqtt)
overrideprivatevirtual

Implements iot::mqtt::server::ControlPacketDeserializer.

Definition at line 103 of file Subscribe.cpp.

103 {
104 mqtt->printVP(*this);
105 mqtt->_onSubscribe(*this);
106 }
void printVP(const iot::mqtt::ControlPacket &packet) const
Definition Mqtt.cpp:368
void _onSubscribe(const iot::mqtt::server::packets::Subscribe &subscribe)
Definition Mqtt.cpp:295

References iot::mqtt::server::Mqtt::_onSubscribe(), and iot::mqtt::Mqtt::printVP().

Here is the call graph for this function:

◆ deserializeVP()

std::size_t iot::mqtt::server::packets::Subscribe::deserializeVP ( iot::mqtt::MqttContext * mqttContext)
overrideprivatevirtual

Implements iot::mqtt::ControlPacketDeserializer.

Definition at line 59 of file Subscribe.cpp.

59 {
60 std::size_t consumed = 0;
61
62 switch (state) {
63 case 0: // V-Header
64 consumed += packetIdentifier.deserialize(mqttContext);
65
66 if (!packetIdentifier.isComplete()) {
67 break;
68 }
69
70 state++;
71 [[fallthrough]];
72 case 1: // Payload
73 consumed += topic.deserialize(mqttContext);
74
75 if (!topic.isComplete()) {
76 break;
77 }
78
79 state++;
80 [[fallthrough]];
81 case 2:
82 consumed += qoS.deserialize(mqttContext);
83
84 if (!qoS.isComplete()) {
85 break;
86 }
87 topics.emplace_back(topic, qoS);
88 topic.reset();
89 qoS.reset();
90
92 state = 1;
93 }
94
96
97 break;
98 }
99
100 return consumed;
101 }
std::list< iot::mqtt::Topic > topics
Definition Subscribe.h:75
iot::mqtt::types::UInt16 packetIdentifier
Definition Subscribe.h:73
iot::mqtt::types::UInt8 qoS
Definition Subscribe.h:67
iot::mqtt::types::String topic
Definition Subscribe.h:66

References iot::mqtt::ControlPacketDeserializer::complete, iot::mqtt::types::String::deserialize(), iot::mqtt::types::TypeBase< ValueTypeT >::deserialize(), iot::mqtt::ControlPacketDeserializer::getConsumed(), iot::mqtt::ControlPacketDeserializer::getRemainingLength(), iot::mqtt::types::TypeBase< ValueTypeT >::isComplete(), iot::mqtt::packets::Subscribe::packetIdentifier, qoS, iot::mqtt::types::String::reset(), iot::mqtt::types::TypeBase< ValueTypeT >::reset(), state, topic, and iot::mqtt::packets::Subscribe::topics.

Here is the call graph for this function:

Member Data Documentation

◆ qoS

iot::mqtt::types::UInt8 iot::mqtt::server::packets::Subscribe::qoS
private

Definition at line 67 of file Subscribe.h.

Referenced by deserializeVP().

◆ state

int iot::mqtt::server::packets::Subscribe::state = 0
private

Definition at line 69 of file Subscribe.h.

Referenced by deserializeVP().

◆ topic

iot::mqtt::types::String iot::mqtt::server::packets::Subscribe::topic
private

Definition at line 66 of file Subscribe.h.

Referenced by deserializeVP().


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