SNode.C
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages Concepts
Unsuback.h
Go to the documentation of this file.
1/*
2 * SNode.C - A Slim Toolkit for Network Communication
3 * Copyright (C) Volker Christian <me@vchrist.at>
4 * 2020, 2021, 2022, 2023, 2024, 2025
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Lesser General Public License as published
8 * by the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20/*
21 * MIT License
22 *
23 * Permission is hereby granted, free of charge, to any person obtaining a copy
24 * of this software and associated documentation files (the "Software"), to deal
25 * in the Software without restriction, including without limitation the rights
26 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
27 * copies of the Software, and to permit persons to whom the Software is
28 * furnished to do so, subject to the following conditions:
29 *
30 * The above copyright notice and this permission notice shall be included in
31 * all copies or substantial portions of the Software.
32 *
33 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
34 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
35 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
36 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
37 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
38 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
39 * THE SOFTWARE.
40 */
41
42#ifndef IOT_MQTT_CLIENT_PACKETS_DESERIALIZER_UNSUBACK_H
43#define IOT_MQTT_CLIENT_PACKETS_DESERIALIZER_UNSUBACK_H
44
45#include "iot/mqtt/client/ControlPacketDeserializer.h" // IWYU pragma: export
46#include "iot/mqtt/packets/Unsuback.h" // IWYU pragma: export
47
48#ifndef DOXYGEN_SHOULD_SKIP_THIS
49
50#include <cstddef>
51#include <cstdint>
52
53#endif // DOXYGEN_SHOULD_SKIP_THIS
54
55namespace iot::mqtt::client::packets {
56
57 class Unsuback
58 : public iot::mqtt::packets::Unsuback
59 , public iot::mqtt::client::ControlPacketDeserializer {
60 public:
61 Unsuback(uint32_t remainingLength, uint8_t flags);
62
63 private:
64 std::size_t deserializeVP(iot::mqtt::MqttContext* mqttContext) override;
65 void deliverPacket(iot::mqtt::client::Mqtt* mqtt) override;
66 };
67
68} // namespace iot::mqtt::client::packets
69
70#endif // IOT_MQTT_CLIENT_PACKETS_DESERIALIZER_UNSUBACK_H
uint8_t getType() const
FixedHeader(uint8_t type, uint8_t flags, uint32_t remainingLength=0)
uint32_t getRemainingLength() const
uint8_t getFlags() const
void setRemainingLength(uint32_t remainingLength)
std::vector< char > serialize() const
std::size_t deserialize(iot::mqtt::MqttContext *mqttContext)
types::UInt8 typeFlags
Definition FixedHeader.h:84
types::UIntV remainingLength
Definition FixedHeader.h:85
MqttContext * mqttContext
Definition Mqtt.h:158
const std::string & getConnectionName() const
Definition Mqtt.cpp:170
virtual void onConnected()
Definition Mqtt.cpp:95
static std::string toHexString(const std::vector< char > &data)
Definition Mqtt.cpp:389
virtual void onPubcomp(const iot::mqtt::packets::Pubcomp &pubcomp)
Definition Mqtt.cpp:265
virtual void onPublish(const iot::mqtt::packets::Publish &publish)
Definition Mqtt.cpp:253
core::timer::Timer keepAliveTimer
Definition Mqtt.h:151
iot::mqtt::FixedHeader fixedHeader
Definition Mqtt.h:146
const MqttContext * getMqttContext() const
Definition Mqtt.cpp:91
std::size_t onReceivedFromPeer()
Definition Mqtt.cpp:99
virtual void onDisconnected()
Definition Mqtt.cpp:166
void send(const std::vector< char > &data) const
Definition Mqtt.cpp:211
void setMqttContext(MqttContext *mqttContext)
Definition Mqtt.cpp:87
void sendPuback(uint16_t packetIdentifier) const
Definition Mqtt.cpp:237
virtual void onPuback(const iot::mqtt::packets::Puback &puback)
Definition Mqtt.cpp:256
std::string connectionName
Definition Mqtt.h:142
void _onPubrec(const iot::mqtt::packets::Pubrec &pubrec)
Definition Mqtt.cpp:320
virtual void deliverPacket(iot::mqtt::ControlPacketDeserializer *controlPacketDeserializer)=0
void sendPubrel(uint16_t packetIdentifier) const
Definition Mqtt.cpp:245
uint16_t getPacketIdentifier()
Definition Mqtt.cpp:398
bool _onPublish(const iot::mqtt::packets::Publish &publish)
Definition Mqtt.cpp:268
virtual iot::mqtt::ControlPacketDeserializer * createControlPacketDeserializer(iot::mqtt::FixedHeader &staticHeader)=0
Mqtt & operator=(Mqtt &&)=delete
virtual ~Mqtt()
Definition Mqtt.cpp:78
void printFixedHeader(const iot::mqtt::FixedHeader &fixedHeader) const
Definition Mqtt.cpp:377
uint16_t _packetIdentifier
Definition Mqtt.h:149
Mqtt(const Mqtt &)=delete
Session * session
Definition Mqtt.h:155
void _onPubrel(const iot::mqtt::packets::Pubrel &pubrel)
Definition Mqtt.cpp:337
virtual void onPubrec(const iot::mqtt::packets::Pubrec &pubrec)
Definition Mqtt.cpp:259
virtual void onPubrel(const iot::mqtt::packets::Pubrel &pubrel)
Definition Mqtt.cpp:262
void send(const iot::mqtt::ControlPacket &controlPacket) const
Definition Mqtt.cpp:205
virtual bool onSignal(int sig)=0
std::string clientId
Definition Mqtt.h:143
void initSession(Session *session, utils::Timeval keepAlive)
Definition Mqtt.cpp:174
Mqtt & operator=(const Mqtt &)=delete
void printVP(const iot::mqtt::ControlPacket &packet) const
Definition Mqtt.cpp:368
Mqtt(Mqtt &&)=delete
iot::mqtt::ControlPacketDeserializer * controlPacketDeserializer
Definition Mqtt.h:147
void sendPubcomp(uint16_t packetIdentifier) const
Definition Mqtt.cpp:249
void sendPubrec(uint16_t packetIdentifier) const
Definition Mqtt.cpp:241
void _onPubcomp(const iot::mqtt::packets::Pubcomp &pubcomp)
Definition Mqtt.cpp:353
void _onPuback(const iot::mqtt::packets::Puback &puback)
Definition Mqtt.cpp:308
void _onPublish(const iot::mqtt::client::packets::Publish &publish)
Definition Mqtt.cpp:213
void sendConnect(uint16_t keepAlive, const std::string &clientId, bool cleanSession, const std::string &willTopic, const std::string &willMessage, uint8_t willQoS, bool willRetain, const std::string &username, const std::string &password, bool loopPrevention=false)
Definition Mqtt.cpp:261
iot::mqtt::Session session
Definition Mqtt.h:141
std::string sessionStoreFileName
Definition Mqtt.h:140
Mqtt(const std::string &connectionName, const std::string &clientId, const std::string &sessionStoreFileName)
Definition Mqtt.cpp:78
void _onPingresp(const iot::mqtt::client::packets::Pingresp &pingresp)
Definition Mqtt.cpp:257
virtual void onConnack(const iot::mqtt::packets::Connack &connack)
Definition Mqtt.cpp:181
virtual void onPingresp(const iot::mqtt::packets::Pingresp &pingresp)
Definition Mqtt.cpp:190
void sendSubscribe(const std::list< Topic > &topics)
Definition Mqtt.cpp:281
iot::mqtt::ControlPacketDeserializer * createControlPacketDeserializer(iot::mqtt::FixedHeader &fixedHeader) final
Definition Mqtt.cpp:134
void _onSuback(const iot::mqtt::client::packets::Suback &suback)
Definition Mqtt.cpp:219
virtual void onUnsuback(const iot::mqtt::packets::Unsuback &unsuback)
Definition Mqtt.cpp:187
void _onConnack(const iot::mqtt::client::packets::Connack &connack)
Definition Mqtt.cpp:193
void _onUnsuback(const iot::mqtt::client::packets::Unsuback &unsuback)
Definition Mqtt.cpp:245
void sendUnsubscribe(const std::list< std::string > &topics)
Definition Mqtt.cpp:285
bool onSignal(int sig) override
Definition Mqtt.cpp:177
virtual void onSuback(const iot::mqtt::packets::Suback &suback)
Definition Mqtt.cpp:184
void deliverPacket(iot::mqtt::ControlPacketDeserializer *controlPacketDeserializer) override
Definition Mqtt.cpp:173
void sendPingreq() const
Definition Mqtt.cpp:289
void sendDisconnect() const
Definition Mqtt.cpp:293
core::timer::Timer pingTimer
Definition Mqtt.h:143
iot::mqtt::types::UInt16 packetIdentifier
Definition Puback.h:68
uint16_t getPacketIdentifier() const
Definition Puback.cpp:66
std::vector< char > serializeVP() const override
Definition Puback.cpp:62
Puback(uint16_t packetIdentifier)
Definition Puback.cpp:57
uint16_t getPacketIdentifier() const
Definition Pubcomp.cpp:66
Pubcomp(uint16_t packetIdentifier)
Definition Pubcomp.cpp:57
std::vector< char > serializeVP() const override
Definition Pubcomp.cpp:62
iot::mqtt::types::UInt16 packetIdentifier
Definition Pubcomp.h:68
Pubrec(uint16_t packetIdentifier)
Definition Pubrec.cpp:57
iot::mqtt::types::UInt16 packetIdentifier
Definition Pubrec.h:68
std::vector< char > serializeVP() const override
Definition Pubrec.cpp:62
uint16_t getPacketIdentifier() const
Definition Pubrec.cpp:66
iot::mqtt::types::UInt16 packetIdentifier
Definition Pubrel.h:68
Pubrel(uint16_t packetIdentifier)
Definition Pubrel.cpp:57
uint16_t getPacketIdentifier() const
Definition Pubrel.cpp:66
std::vector< char > serializeVP() const override
Definition Pubrel.cpp:62
UInt8 & operator=(const uint8_t &newValue)
Definition UInt8.cpp:57
UInt8(UInt8 &&) noexcept=default
UInt8 & operator=(UInt8 &&) noexcept=default
UInt8 & operator=(const UInt8 &)=default
UInt8(const UInt8 &)=default
UIntV & operator=(UIntV &&) noexcept=default
std::size_t deserialize(iot::mqtt::MqttContext *mqttContext) override
Definition UIntV.cpp:62
bool isError() const
Definition UIntV.cpp:112
UIntV & operator=(const uint32_t &newValue)
Definition UIntV.cpp:83
UIntV(UIntV &&) noexcept=default
UIntV(const UIntV &)=default
UIntV & operator=(const UIntV &)=default
void reset(std::size_t size=sizeof(ValueType)) override
Definition UIntV.cpp:116
#define MQTT_CONNACK
Definition Connack.h:57
#define MQTT_CONNACK_ACCEPT
Definition Connack.h:59
#define MQTT_PINGRESP
Definition Pingresp.h:55
#define MQTT_PUBACK
Definition Puback.h:57
#define MQTT_PUBCOMP
Definition Pubcomp.h:57
#define MQTT_PUBLISH
Definition Publish.h:58
#define MQTT_PUBREC
Definition Pubrec.h:57
#define MQTT_PUBREL
Definition Pubrel.h:57
#define MQTT_SUBACK
Definition Suback.h:58
#define MQTT_UNSUBACK
Definition Unsuback.h:57
Definition SNodeC.h:57