1// Copyright (C) 2017 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QMQTTCONTROLPACKET_P_H
6#define QMQTTCONTROLPACKET_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18#include "qmqttglobal_p.h"
19
20#include <QtCore/QByteArray>
21#include <QtCore/QtGlobal>
22#include <QtCore/private/qglobal_p.h>
23
24QT_BEGIN_NAMESPACE
25
26class Q_AUTOTEST_EXPORT QMqttControlPacket
27{
28public:
29 enum PacketType {
30 UNKNOWN = 0x00,
31 CONNECT = 0x10,
32 CONNACK = 0x20,
33 PUBLISH = 0x30,
34 PUBACK = 0x40,
35 PUBREC = 0x50,
36 PUBREL = 0x60,
37 PUBCOMP = 0x70,
38 SUBSCRIBE = 0x80,
39 SUBACK = 0x90,
40 UNSUBSCRIBE = 0xA0,
41 UNSUBACK = 0xB0,
42 PINGREQ = 0xC0,
43 PINGRESP = 0xD0,
44 DISCONNECT = 0xE0,
45 AUTH = 0xF0,
46 };
47
48 QMqttControlPacket();
49 QMqttControlPacket(quint8 header);
50 QMqttControlPacket(quint8 header, const QByteArray &pay);
51
52 void clear();
53
54 void setHeader(quint8 h);
55 inline quint8 header() const { return m_header; }
56
57 void append(char value);
58 void append(quint16 value);
59 void append(quint32 value);
60 void append(const QByteArray &data);
61 void appendRaw(const QByteArray &data);
62 void appendRawVariableInteger(quint32 value);
63
64 QByteArray serialize() const;
65 QByteArray serializePayload() const;
66 inline QByteArray payload() const { return m_payload; }
67private:
68 quint8 m_header{UNKNOWN};
69 QByteArray m_payload;
70};
71
72QT_END_NAMESPACE
73
74#endif // QMQTTCONTROLPACKET_P_H
75

source code of qtmqtt/src/mqtt/qmqttcontrolpacket_p.h