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
 
uint8_t getType () const
 
uint8_t getFlags () const
 
- Public Member Functions inherited from iot::mqtt::client::ControlPacketDeserializer
 ~ControlPacketDeserializer () override
 
- 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 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 35 of file Publish.h.

Constructor & Destructor Documentation

◆ Publish()

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

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 77 of file Publish.cpp.

77 {
78 mqtt->printVP(*this);
79 mqtt->_onPublish(*this);
80 }
void printVP(const iot::mqtt::ControlPacket &packet) const
Definition Mqtt.cpp:346
void _onPublish(const iot::mqtt::client::packets::Publish &publish)
Definition Mqtt.cpp:192

◆ deserializeVP()

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

Implements iot::mqtt::ControlPacketDeserializer.

Definition at line 40 of file Publish.cpp.

40 {
41 std::size_t consumed = 0;
42
43 switch (state) {
44 case 0: // V-Header
45 consumed += topic.deserialize(mqttContext);
46 if (!topic.isComplete()) {
47 break;
48 }
49
50 state++;
51 [[fallthrough]];
52 case 1:
53 if (qoS > 0) {
56 break;
57 }
58 }
59
60 message.setSize(static_cast<uint16_t>(getRemainingLength() - getConsumed() - consumed));
61
62 state++;
63 [[fallthrough]];
64 case 2: // Payload
65 consumed += message.deserialize(mqttContext);
66 if (!message.isComplete()) {
67 break;
68 }
69
70 complete = true;
71 break;
72 }
73
74 return consumed;
75 }
iot::mqtt::types::StringRaw message
Definition Publish.h:57
iot::mqtt::types::UInt16 packetIdentifier
Definition Publish.h:55
iot::mqtt::types::String topic
Definition Publish.h:56
std::size_t deserialize(iot::mqtt::MqttContext *mqttContext) override
Definition String.cpp:45
void setSize(std::size_t size)
Definition TypeBase.hpp:48
virtual std::size_t deserialize(iot::mqtt::MqttContext *mqttContext)
Definition TypeBase.hpp:37

Member Data Documentation

◆ state

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

Definition at line 45 of file Publish.h.


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