SNode.C
Loading...
Searching...
No Matches
iot::mqtt::client::packets::Publish Class Reference

#include <Publish.h>

Inheritance diagram for iot::mqtt::client::packets::Publish:
Collaboration diagram for iot::mqtt::client::packets::Publish:

Public Member Functions

 Publish (uint32_t remainingLength, uint8_t flags)
Public Member Functions inherited from iot::mqtt::packets::Publish
 Publish ()
 Publish (uint16_t packetIdentifier, const std::string &topic, const std::string &message, uint8_t qoS, bool dup, bool retain)
bool getDup () const
uint8_t getQoS () const
uint16_t getPacketIdentifier () const
std::string getTopic () const
std::string getMessage () const
bool getRetain () 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::client::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::client::Mqtt *mqtt) override

Private Attributes

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::Publish
iot::mqtt::types::UInt16 packetIdentifier
iot::mqtt::types::String topic
iot::mqtt::types::StringRaw message
bool dup = false
uint8_t qoS = 0
bool retain = false
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 57 of file Publish.h.

Constructor & Destructor Documentation

◆ Publish()

iot::mqtt::client::packets::Publish::Publish ( uint32_t remainingLength,
uint8_t flags )

Definition at line 52 of file Publish.cpp.

53 : iot::mqtt::client::ControlPacketDeserializer(remainingLength, flags, flags) {
54 this->flags = flags;
55 this->qoS = flags >> 1 & 0x03;
56 this->dup = (flags & 0x08) != 0;
57 this->retain = (flags & 0x01) != 0;
58
59 error = this->qoS > 2;
60 }

References iot::mqtt::packets::Publish::dup, iot::mqtt::ControlPacketDeserializer::error, iot::mqtt::ControlPacket::flags, iot::mqtt::packets::Publish::qoS, and iot::mqtt::packets::Publish::retain.

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

Here is the caller graph for this function:

Member Function Documentation

◆ deliverPacket()

void iot::mqtt::client::packets::Publish::deliverPacket ( iot::mqtt::client::Mqtt * mqtt)
overrideprivatevirtual

Implements iot::mqtt::client::ControlPacketDeserializer.

Definition at line 99 of file Publish.cpp.

99 {
100 mqtt->printVP(*this);
101 mqtt->_onPublish(*this);
102 }
void printVP(const iot::mqtt::ControlPacket &packet) const
Definition Mqtt.cpp:368
void _onPublish(const iot::mqtt::client::packets::Publish &publish)
Definition Mqtt.cpp:214

References iot::mqtt::client::Mqtt::_onPublish(), and iot::mqtt::Mqtt::printVP().

Here is the call graph for this function:

◆ deserializeVP()

std::size_t iot::mqtt::client::packets::Publish::deserializeVP ( iot::mqtt::MqttContext * mqttContext)
overrideprivatevirtual

Implements iot::mqtt::ControlPacketDeserializer.

Definition at line 62 of file Publish.cpp.

62 {
63 std::size_t consumed = 0;
64
65 switch (state) {
66 case 0: // V-Header
67 consumed += topic.deserialize(mqttContext);
68 if (!topic.isComplete()) {
69 break;
70 }
71
72 state++;
73 [[fallthrough]];
74 case 1:
75 if (qoS > 0) {
76 consumed += packetIdentifier.deserialize(mqttContext);
77 if (!packetIdentifier.isComplete()) {
78 break;
79 }
80 }
81
82 message.setSize(static_cast<uint16_t>(getRemainingLength() - getConsumed() - consumed));
83
84 state++;
85 [[fallthrough]];
86 case 2: // Payload
87 consumed += message.deserialize(mqttContext);
88 if (!message.isComplete()) {
89 break;
90 }
91
92 complete = true;
93 break;
94 }
95
96 return consumed;
97 }
iot::mqtt::types::StringRaw message
Definition Publish.h:79
iot::mqtt::types::UInt16 packetIdentifier
Definition Publish.h:77
iot::mqtt::types::String topic
Definition Publish.h:78

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::Publish::message, iot::mqtt::packets::Publish::packetIdentifier, iot::mqtt::packets::Publish::qoS, iot::mqtt::types::TypeBase< ValueTypeT >::setSize(), state, and iot::mqtt::packets::Publish::topic.

Here is the call graph for this function:

Member Data Documentation

◆ state

int iot::mqtt::client::packets::Publish::state = 0
private

Definition at line 67 of file Publish.h.

Referenced by deserializeVP().


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