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#ifndef QMQTTPUBLISHPROPERTIES_H
5#define QMQTTPUBLISHPROPERTIES_H
6
7#include <QtMqtt/qmqttglobal.h>
8#include <QtMqtt/qmqtttype.h>
9
10#include <QtCore/QObject>
11#include <QtCore/QSharedDataPointer>
12
13QT_BEGIN_NAMESPACE
14
15class QMqttPublishPropertiesData;
16class QMqttMessageStatusPropertiesData;
17
18class Q_MQTT_EXPORT QMqttPublishProperties
19{
20public:
21 enum PublishPropertyDetail : quint32 {
22 None = 0x00000000,
23 PayloadFormatIndicator = 0x00000001,
24 MessageExpiryInterval = 0x00000002,
25 TopicAlias = 0x00000004,
26 ResponseTopic = 0x00000008,
27 CorrelationData = 0x00000010,
28 UserProperty = 0x00000020,
29 SubscriptionIdentifier = 0x00000040,
30 ContentType = 0x00000080
31 };
32 Q_DECLARE_FLAGS(PublishPropertyDetails, PublishPropertyDetail)
33
34 QMqttPublishProperties();
35 QMqttPublishProperties(const QMqttPublishProperties &);
36 QMqttPublishProperties &operator=(const QMqttPublishProperties &);
37 ~QMqttPublishProperties();
38
39 PublishPropertyDetails availableProperties() const;
40
41 QMqtt::PayloadFormatIndicator payloadFormatIndicator() const;
42 void setPayloadFormatIndicator(QMqtt::PayloadFormatIndicator indicator);
43
44 quint32 messageExpiryInterval() const;
45 void setMessageExpiryInterval(quint32 interval);
46
47 quint16 topicAlias() const;
48 void setTopicAlias(quint16 alias);
49
50 QString responseTopic() const;
51 void setResponseTopic(const QString &topic);
52
53 QByteArray correlationData() const;
54 void setCorrelationData(const QByteArray &correlation);
55
56 QMqttUserProperties userProperties() const;
57 void setUserProperties(const QMqttUserProperties &properties);
58
59 QList<quint32> subscriptionIdentifiers() const;
60 void setSubscriptionIdentifiers(const QList<quint32> &ids);
61
62 QString contentType() const;
63 void setContentType(const QString &type);
64private:
65 QSharedDataPointer<QMqttPublishPropertiesData> data;
66};
67
68Q_DECLARE_OPERATORS_FOR_FLAGS(QMqttPublishProperties::PublishPropertyDetails)
69
70class Q_MQTT_EXPORT QMqttMessageStatusProperties
71{
72public:
73 QMqttMessageStatusProperties();
74 QMqttMessageStatusProperties(const QMqttMessageStatusProperties &);
75 QMqttMessageStatusProperties &operator=(const QMqttMessageStatusProperties &);
76 ~QMqttMessageStatusProperties();
77
78 QMqtt::ReasonCode reasonCode() const;
79 QString reason() const;
80 QMqttUserProperties userProperties() const;
81
82private:
83 friend class QMqttConnection;
84 QSharedDataPointer<QMqttMessageStatusPropertiesData> data;
85};
86
87QT_END_NAMESPACE
88
89#endif // QMQTTPUBLISHPROPERTIES_H
90

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