diff options
Diffstat (limited to 'src/coap/qcoapconnection_p.h')
-rw-r--r-- | src/coap/qcoapconnection_p.h | 51 |
1 files changed, 49 insertions, 2 deletions
diff --git a/src/coap/qcoapconnection_p.h b/src/coap/qcoapconnection_p.h index d75c794..200744d 100644 --- a/src/coap/qcoapconnection_p.h +++ b/src/coap/qcoapconnection_p.h @@ -30,9 +30,12 @@ #ifndef QCOAPCONNECTION_P_H #define QCOAPCONNECTION_P_H -#include <QtCoap/qcoapconnection.h> +#include <QtCoap/qcoapnamespace.h> +#include <QtCoap/qcoapsecurityconfiguration.h> #include <QtCore/qqueue.h> +#include <QtCore/qobject.h> +#include <QtNetwork/qabstractsocket.h> #include <private/qobject_p.h> // @@ -48,6 +51,50 @@ QT_BEGIN_NAMESPACE +class QCoapConnectionPrivate; +class Q_AUTOTEST_EXPORT QCoapConnection : public QObject +{ + Q_OBJECT +public: + enum class ConnectionState : quint8 { + Unconnected, + Bound + }; + + explicit QCoapConnection(QtCoap::SecurityMode securityMode = QtCoap::SecurityMode::NoSecurity, + QObject *parent = nullptr); + virtual ~QCoapConnection(); + + bool isSecure() const; + QtCoap::SecurityMode securityMode() const; + ConnectionState state() const; + QCoapSecurityConfiguration securityConfiguration() const; + + Q_INVOKABLE void setSecurityConfiguration(const QCoapSecurityConfiguration &configuration); + Q_INVOKABLE void disconnect(); + +Q_SIGNALS: + void error(QAbstractSocket::SocketError error); + void readyRead(const QByteArray &data, const QHostAddress &sender); + void bound(); + void securityConfigurationChanged(); + +private: + void startToSendRequest(); + +protected: + QCoapConnection(QObjectPrivate &dd, QObject *parent = nullptr); + + virtual void bind(const QString &host, quint16 port) = 0; + virtual void writeData(const QByteArray &data, const QString &host, quint16 port) = 0; + virtual void close() = 0; + +private: + friend class QCoapProtocolPrivate; + + Q_DECLARE_PRIVATE(QCoapConnection) +}; + struct CoapFrame { QByteArray currentPdu; QString host; @@ -60,7 +107,7 @@ struct CoapFrame { class Q_AUTOTEST_EXPORT QCoapConnectionPrivate : public QObjectPrivate { public: - QCoapConnectionPrivate(QtCoap::SecurityMode security = QtCoap::SecurityMode::NoSec); + QCoapConnectionPrivate(QtCoap::SecurityMode security = QtCoap::SecurityMode::NoSecurity); ~QCoapConnectionPrivate() override = default; |