1// Copyright (C) 2018 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 QMQTTCONNECTIONPROPERTIES_H
6#define QMQTTCONNECTIONPROPERTIES_H
7
8#include <QtMqtt/qmqttglobal.h>
9#include <QtMqtt/qmqtttype.h>
10
11#include <QtCore/QObject>
12#include <QtCore/QSharedDataPointer>
13
14QT_BEGIN_NAMESPACE
15
16class QMqttConnectionPropertiesData;
17class QMqttLastWillPropertiesData;
18class QMqttServerConnectionPropertiesData;
19
20class Q_MQTT_EXPORT QMqttLastWillProperties
21{
22public:
23 QMqttLastWillProperties();
24 QMqttLastWillProperties(const QMqttLastWillProperties &);
25 QMqttLastWillProperties &operator=(const QMqttLastWillProperties &);
26 ~QMqttLastWillProperties();
27
28 quint32 willDelayInterval() const;
29 QMqtt::PayloadFormatIndicator payloadFormatIndicator() const;
30 quint32 messageExpiryInterval() const;
31 QString contentType() const;
32 QString responseTopic() const;
33 QByteArray correlationData() const;
34 QMqttUserProperties userProperties() const;
35
36 void setWillDelayInterval(quint32 delay);
37 void setPayloadFormatIndicator(QMqtt::PayloadFormatIndicator p);
38 void setMessageExpiryInterval(quint32 expiry);
39 void setContentType(const QString &content);
40 void setResponseTopic(const QString &response);
41 void setCorrelationData(const QByteArray &correlation);
42 void setUserProperties(const QMqttUserProperties &properties);
43
44private:
45 QSharedDataPointer<QMqttLastWillPropertiesData> data;
46};
47
48class Q_MQTT_EXPORT QMqttConnectionProperties
49{
50public:
51 QMqttConnectionProperties();
52 QMqttConnectionProperties(const QMqttConnectionProperties &);
53 QMqttConnectionProperties &operator=(const QMqttConnectionProperties &);
54 ~QMqttConnectionProperties();
55
56 quint32 sessionExpiryInterval() const;
57 quint16 maximumReceive() const;
58 quint32 maximumPacketSize() const;
59 quint16 maximumTopicAlias() const;
60 bool requestResponseInformation() const;
61 bool requestProblemInformation() const;
62 QMqttUserProperties userProperties() const;
63 QString authenticationMethod() const;
64 QByteArray authenticationData() const;
65
66 void setSessionExpiryInterval(quint32 expiry);
67 void setMaximumReceive(quint16 maximumReceive);
68 void setMaximumPacketSize(quint32 packetSize);
69 void setMaximumTopicAlias(quint16 alias);
70 void setRequestResponseInformation(bool response);
71 void setRequestProblemInformation(bool problem);
72 void setUserProperties(const QMqttUserProperties &properties);
73 void setAuthenticationMethod(const QString &authMethod);
74 void setAuthenticationData(const QByteArray &authData);
75
76private:
77 friend class QMqttConnection;
78 QSharedDataPointer<QMqttConnectionPropertiesData> data;
79};
80
81class Q_MQTT_EXPORT QMqttServerConnectionProperties
82 : public QMqttConnectionProperties
83{
84public:
85 enum ServerPropertyDetail : quint32 {
86 None = 0x00000000,
87 SessionExpiryInterval = 0x00000001,
88 MaximumReceive = 0x00000002,
89 MaximumQoS = 0x00000004,
90 RetainAvailable = 0x00000010,
91 MaximumPacketSize = 0x00000020,
92 AssignedClientId = 0x00000040,
93 MaximumTopicAlias = 0x00000080,
94 ReasonString = 0x00000100,
95 UserProperty = 0x00000200,
96 WildCardSupported = 0x00000400,
97 SubscriptionIdentifierSupport = 0x00000800,
98 SharedSubscriptionSupport = 0x00001000,
99 ServerKeepAlive = 0x00002000,
100 ResponseInformation = 0x00004000,
101 ServerReference = 0x00008000,
102 AuthenticationMethod = 0x00010000,
103 AuthenticationData = 0x00020000
104 };
105 Q_DECLARE_FLAGS(ServerPropertyDetails, ServerPropertyDetail)
106
107 QMqttServerConnectionProperties();
108 QMqttServerConnectionProperties(const QMqttServerConnectionProperties &);
109 QMqttServerConnectionProperties &operator=(const QMqttServerConnectionProperties &);
110 ~QMqttServerConnectionProperties();
111
112 ServerPropertyDetails availableProperties() const;
113
114 bool isValid() const;
115
116 quint8 maximumQoS() const;
117 bool retainAvailable() const;
118 bool clientIdAssigned() const;
119 QString reason() const;
120 QMqtt::ReasonCode reasonCode() const;
121 bool wildcardSupported() const;
122 bool subscriptionIdentifierSupported() const;
123 bool sharedSubscriptionSupported() const;
124 quint16 serverKeepAlive() const;
125 QString responseInformation() const;
126 QString serverReference() const;
127
128private:
129 friend class QMqttConnection;
130 QSharedDataPointer<QMqttServerConnectionPropertiesData> serverData;
131};
132
133Q_DECLARE_OPERATORS_FOR_FLAGS(QMqttServerConnectionProperties::ServerPropertyDetails)
134
135QT_END_NAMESPACE
136
137#endif // QMQTTCONNECTIONPROPERTIES_H
138

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