1// Copyright (C) 2017 Witekio.
2// Copyright (C) 2018 The Qt Company Ltd.
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
4// Qt-Security score:significant reason:default
5
6#ifndef QCOAPCLIENT_H
7#define QCOAPCLIENT_H
8
9#include <QtCore/qglobal.h>
10#include <QtCoap/qcoapglobal.h>
11#include <QtCoap/qcoapnamespace.h>
12#include <QtCore/qobject.h>
13#include <QtNetwork/qabstractsocket.h>
14
15QT_BEGIN_NAMESPACE
16
17class QCoapReply;
18class QCoapResourceDiscoveryReply;
19class QCoapRequest;
20class QCoapProtocol;
21class QCoapConnection;
22class QCoapSecurityConfiguration;
23class QCoapMessage;
24class QIODevice;
25
26class QCoapClientPrivate;
27class Q_COAP_EXPORT QCoapClient : public QObject
28{
29 Q_OBJECT
30public:
31 explicit QCoapClient(QtCoap::SecurityMode securityMode = QtCoap::SecurityMode::NoSecurity,
32 QObject *parent = nullptr);
33 ~QCoapClient();
34
35 QCoapReply *get(const QCoapRequest &request);
36 QCoapReply *get(const QUrl &url);
37 QCoapReply *put(const QCoapRequest &request, const QByteArray &data = QByteArray());
38 QCoapReply *put(const QCoapRequest &request, QIODevice *device);
39 QCoapReply *put(const QUrl &url, const QByteArray &data = QByteArray());
40 QCoapReply *post(const QCoapRequest &request, const QByteArray &data = QByteArray());
41 QCoapReply *post(const QCoapRequest &request, QIODevice *device);
42 QCoapReply *post(const QUrl &url, const QByteArray &data = QByteArray());
43 QCoapReply *deleteResource(const QCoapRequest &request);
44 QCoapReply *deleteResource(const QUrl &url);
45 QCoapReply *observe(const QCoapRequest &request);
46 QCoapReply *observe(const QUrl &request);
47 void cancelObserve(QCoapReply *notifiedReply);
48 void cancelObserve(const QUrl &url);
49 void disconnect();
50
51 QCoapResourceDiscoveryReply *discover(
52 QtCoap::MulticastGroup group = QtCoap::MulticastGroup::AllCoapNodesIPv4,
53 int port = QtCoap::DefaultPort,
54 const QString &discoveryPath = QLatin1String("/.well-known/core"));
55 QCoapResourceDiscoveryReply *discover(
56 const QUrl &baseUrl,
57 const QString &discoveryPath = QLatin1String("/.well-known/core"));
58
59 void setSecurityConfiguration(const QCoapSecurityConfiguration &configuration);
60 void setBlockSize(quint16 blockSize);
61 void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value);
62 void setMaximumServerResponseDelay(uint responseDelay);
63 void setAckTimeout(uint ackTimeout);
64 void setAckRandomFactor(double ackRandomFactor);
65 void setMaximumRetransmitCount(uint maximumRetransmitCount);
66 void setMinimumTokenSize(int tokenSize);
67
68Q_SIGNALS:
69 void finished(QCoapReply *reply);
70 void responseToMulticastReceived(QCoapReply *reply, const QCoapMessage &message,
71 const QHostAddress &sender);
72 void error(QCoapReply *reply, QtCoap::Error error);
73
74protected:
75 Q_DECLARE_PRIVATE(QCoapClient)
76};
77
78QT_END_NAMESPACE
79
80#endif // QCOAPCLIENT_H
81

source code of qtcoap/src/coap/qcoapclient.h