diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/coap/qcoapclient.cpp | 2 | ||||
-rw-r--r-- | src/coap/qcoapinternalreply.cpp | 2 | ||||
-rw-r--r-- | src/coap/qcoapinternalrequest.cpp | 8 | ||||
-rw-r--r-- | src/coap/qcoapmessage.cpp | 35 | ||||
-rw-r--r-- | src/coap/qcoapmessage.h | 14 | ||||
-rw-r--r-- | src/coap/qcoapmessage_p.h | 6 | ||||
-rw-r--r-- | src/coap/qcoapprotocol.cpp | 8 | ||||
-rw-r--r-- | src/coap/qcoaprequest.cpp | 6 | ||||
-rw-r--r-- | src/coap/qcoaprequest.h | 7 | ||||
-rw-r--r-- | src/coap/qcoaprequest_p.h | 4 |
10 files changed, 52 insertions, 40 deletions
diff --git a/src/coap/qcoapclient.cpp b/src/coap/qcoapclient.cpp index f2205a0..6e1e52b 100644 --- a/src/coap/qcoapclient.cpp +++ b/src/coap/qcoapclient.cpp @@ -570,7 +570,7 @@ bool QCoapClientPrivate::send(QCoapReply *reply) // According to https://tools.ietf.org/html/rfc7252#section-8.1, // multicast requests MUST be Non-confirmable. if (QHostAddress(reply->url().host()).isMulticast() - && reply->request().type() == QCoapMessage::MessageType::Confirmable) { + && reply->request().type() == QCoapMessage::Type::Confirmable) { qCWarning(lcCoapClient, "Failed to send request, " "multicast requests must be non-confirmable."); return false; diff --git a/src/coap/qcoapinternalreply.cpp b/src/coap/qcoapinternalreply.cpp index 191e8ba..fe27ee0 100644 --- a/src/coap/qcoapinternalreply.cpp +++ b/src/coap/qcoapinternalreply.cpp @@ -92,7 +92,7 @@ QCoapInternalReply *QCoapInternalReply::createFromFrame(const QByteArray &reply, // Parse Header and Token d->message.setVersion((pduData[0] >> 6) & 0x03); - d->message.setType(QCoapMessage::MessageType((pduData[0] >> 4) & 0x03)); + d->message.setType(QCoapMessage::Type((pduData[0] >> 4) & 0x03)); quint8 tokenLength = (pduData[0]) & 0x0F; d->responseCode = static_cast<QtCoap::ResponseCode>(pduData[1]); d->message.setMessageId(static_cast<quint16>((static_cast<quint16>(pduData[2]) << 8) diff --git a/src/coap/qcoapinternalrequest.cpp b/src/coap/qcoapinternalrequest.cpp index 2e10432..0237259 100644 --- a/src/coap/qcoapinternalrequest.cpp +++ b/src/coap/qcoapinternalrequest.cpp @@ -111,11 +111,11 @@ void QCoapInternalRequest::initForAcknowledgment(quint16 messageId, const QByteA Q_D(QCoapInternalRequest); setMethod(QtCoap::Method::Invalid); - d->message.setType(QCoapMessage::MessageType::Acknowledgment); + d->message.setType(QCoapMessage::Type::Acknowledgment); d->message.setMessageId(messageId); d->message.setToken(token); d->message.setPayload(QByteArray()); - d->message.removeAllOptions(); + d->message.clearOptions(); } /*! @@ -130,11 +130,11 @@ void QCoapInternalRequest::initForReset(quint16 messageId) Q_D(QCoapInternalRequest); setMethod(QtCoap::Method::Invalid); - d->message.setType(QCoapMessage::MessageType::Reset); + d->message.setType(QCoapMessage::Type::Reset); d->message.setMessageId(messageId); d->message.setToken(QByteArray()); d->message.setPayload(QByteArray()); - d->message.removeAllOptions(); + d->message.clearOptions(); } /*! diff --git a/src/coap/qcoapmessage.cpp b/src/coap/qcoapmessage.cpp index d07611c..21462f7 100644 --- a/src/coap/qcoapmessage.cpp +++ b/src/coap/qcoapmessage.cpp @@ -32,7 +32,7 @@ QT_BEGIN_NAMESPACE -QCoapMessagePrivate::QCoapMessagePrivate(QCoapMessage::MessageType _type) : +QCoapMessagePrivate::QCoapMessagePrivate(QCoapMessage::Type _type) : type(_type) { } @@ -64,7 +64,7 @@ QCoapMessagePrivate::~QCoapMessagePrivate() */ /*! - \enum QCoapMessage::MessageType + \enum QCoapMessage::Type Indicates the type of the message. @@ -179,7 +179,7 @@ void QCoapMessage::removeOption(QCoapOption::OptionName name) /*! Removes all options. */ -void QCoapMessage::removeAllOptions() +void QCoapMessage::clearOptions() { Q_D(QCoapMessage); d->options.clear(); @@ -201,7 +201,7 @@ quint8 QCoapMessage::version() const \sa setType() */ -QCoapMessage::MessageType QCoapMessage::type() const +QCoapMessage::Type QCoapMessage::type() const { Q_D(const QCoapMessage); return d->type; @@ -252,7 +252,7 @@ QByteArray QCoapMessage::payload() const /*! Returns the option at \a index position. */ -QCoapOption QCoapMessage::option(int index) const +QCoapOption QCoapMessage::optionAt(int index) const { Q_D(const QCoapMessage); return d->options.at(index); @@ -260,25 +260,27 @@ QCoapOption QCoapMessage::option(int index) const /*! Finds and returns the first option with the given \a name. - If there is no such option, returns an Invalid CoapOption with an empty value. + If there is no such option, returns an invalid QCoapOption with an empty value. */ QCoapOption QCoapMessage::option(QCoapOption::OptionName name) const { Q_D(const QCoapMessage); - auto it = findOption(name); + auto it = d->findOption(name); return it != d->options.end() ? *it : QCoapOption(); } /*! + \internal + Finds and returns a constant iterator to the first option with the given \a name. If there is no such option, returns \c d->options.end(). */ -QVector<QCoapOption>::const_iterator QCoapMessage::findOption(QCoapOption::OptionName name) const +QVector<QCoapOption>::const_iterator +QCoapMessagePrivate::findOption(QCoapOption::OptionName name) const { - Q_D(const QCoapMessage); - return std::find_if(d->options.begin(), d->options.end(), [name](const QCoapOption &option) { + return std::find_if(options.begin(), options.end(), [name](const QCoapOption &option) { return option.name() == name; }); } @@ -290,7 +292,7 @@ QVector<QCoapOption>::const_iterator QCoapMessage::findOption(QCoapOption::Optio bool QCoapMessage::hasOption(QCoapOption::OptionName name) const { Q_D(const QCoapMessage); - return findOption(name) != d->options.end(); + return d->findOption(name) != d->options.end(); } /*! @@ -342,7 +344,7 @@ void QCoapMessage::setVersion(quint8 version) \sa type() */ -void QCoapMessage::setType(const MessageType &type) +void QCoapMessage::setType(const Type &type) { Q_D(QCoapMessage); d->type = type; @@ -387,6 +389,15 @@ void QCoapMessage::setPayload(const QByteArray &payload) d->payload = payload; } +/*! + Sets the message options to \a options. +*/ +void QCoapMessage::setOptions(const QVector<QCoapOption> &options) +{ + Q_D(QCoapMessage); + d->options = options; +} + void QCoapMessage::swap(QCoapMessage &other) Q_DECL_NOTHROW { qSwap(d_ptr, other.d_ptr); diff --git a/src/coap/qcoapmessage.h b/src/coap/qcoapmessage.h index 36288a7..b88a41a 100644 --- a/src/coap/qcoapmessage.h +++ b/src/coap/qcoapmessage.h @@ -44,7 +44,7 @@ class QCoapMessagePrivate; class Q_COAP_EXPORT QCoapMessage { public: - enum class MessageType : quint8 { + enum class Type : quint8 { Confirmable, NonConfirmable, Acknowledgment, @@ -60,20 +60,20 @@ public: QCoapMessage &operator=(QCoapMessage &&other) Q_DECL_NOTHROW; quint8 version() const; - MessageType type() const; + Type type() const; QByteArray token() const; quint8 tokenLength() const; quint16 messageId() const; QByteArray payload() const; void setVersion(quint8 version); - void setType(const MessageType &type); + void setType(const Type &type); void setToken(const QByteArray &token); void setMessageId(quint16); void setPayload(const QByteArray &payload); + void setOptions(const QVector<QCoapOption> &options); - QCoapOption option(int index) const; + QCoapOption optionAt(int index) const; QCoapOption option(QCoapOption::OptionName name) const; - QVector<QCoapOption>::const_iterator findOption(QCoapOption::OptionName name) const; bool hasOption(QCoapOption::OptionName name) const; const QVector<QCoapOption> &options() const; QVector<QCoapOption> options(QCoapOption::OptionName name) const; @@ -82,7 +82,7 @@ public: void addOption(const QCoapOption &option); void removeOption(const QCoapOption &option); void removeOption(QCoapOption::OptionName name); - void removeAllOptions(); + void clearOptions(); protected: explicit QCoapMessage(QCoapMessagePrivate &dd); @@ -99,6 +99,6 @@ Q_DECLARE_SHARED(QCoapMessage) QT_END_NAMESPACE Q_DECLARE_METATYPE(QCoapMessage) -Q_DECLARE_METATYPE(QCoapMessage::MessageType) +Q_DECLARE_METATYPE(QCoapMessage::Type) #endif // QCOAPMESSAGE_H diff --git a/src/coap/qcoapmessage_p.h b/src/coap/qcoapmessage_p.h index b16ba2b..fbff1b8 100644 --- a/src/coap/qcoapmessage_p.h +++ b/src/coap/qcoapmessage_p.h @@ -51,12 +51,14 @@ QT_BEGIN_NAMESPACE class Q_AUTOTEST_EXPORT QCoapMessagePrivate : public QSharedData { public: - QCoapMessagePrivate(QCoapMessage::MessageType type = QCoapMessage::MessageType::NonConfirmable); + QCoapMessagePrivate(QCoapMessage::Type type = QCoapMessage::Type::NonConfirmable); QCoapMessagePrivate(const QCoapMessagePrivate &other); ~QCoapMessagePrivate(); + QVector<QCoapOption>::const_iterator findOption(QCoapOption::OptionName name) const; + quint8 version = 1; - QCoapMessage::MessageType type = QCoapMessage::MessageType::NonConfirmable; + QCoapMessage::Type type = QCoapMessage::Type::NonConfirmable; quint16 messageId = 0; QByteArray token; QVector<QCoapOption> options; diff --git a/src/coap/qcoapprotocol.cpp b/src/coap/qcoapprotocol.cpp index 2de5583..2f4c278 100644 --- a/src/coap/qcoapprotocol.cpp +++ b/src/coap/qcoapprotocol.cpp @@ -178,7 +178,7 @@ void QCoapProtocol::sendRequest(QPointer<QCoapReply> reply, QCoapConnection *con internalRequest->setToSendBlock(0, d->blockSize); } - if (requestMessage->type() == QCoapMessage::MessageType::Confirmable) + if (requestMessage->type() == QCoapMessage::Type::Confirmable) internalRequest->setTimeout(QtCoap::randomGenerator().bounded(minTimeout(), maxTimeout())); else internalRequest->setTimeout(maxTimeout()); @@ -239,7 +239,7 @@ void QCoapProtocolPrivate::onRequestTimeout(QCoapInternalRequest *request) if (!isRequestRegistered(request)) return; - if (request->message()->type() == QCoapMessage::MessageType::Confirmable + if (request->message()->type() == QCoapMessage::Type::Confirmable && request->retransmissionCounter() < maxRetransmit) { sendRequest(request); } else { @@ -376,7 +376,7 @@ void QCoapProtocolPrivate::onFrameReceived(const QByteArray &data, const QHostAd // Remove option to ensure that it will stop request->removeOption(QCoapOption::Observe); sendReset(request); - } else if (messageReceived->type() == QCoapMessage::MessageType::Confirmable) { + } else if (messageReceived->type() == QCoapMessage::Type::Confirmable) { sendAcknowledgment(request); } @@ -515,7 +515,7 @@ void QCoapProtocolPrivate::onLastMessageReceived(QCoapInternalRequest *request, auto lastReply = replies.last(); // Ignore empty ACK messages - if (lastReply->message()->type() == QCoapMessage::MessageType::Acknowledgment + if (lastReply->message()->type() == QCoapMessage::Type::Acknowledgment && lastReply->responseCode() == QtCoap::ResponseCode::EmptyMessage) { exchangeMap[request->token()].replies.takeLast(); return; diff --git a/src/coap/qcoaprequest.cpp b/src/coap/qcoaprequest.cpp index 47abc2b..59cdb59 100644 --- a/src/coap/qcoaprequest.cpp +++ b/src/coap/qcoaprequest.cpp @@ -44,7 +44,7 @@ const auto CoapScheme = QLatin1String("coap"); const auto CoapSecureScheme = QLatin1String("coaps"); } -QCoapRequestPrivate::QCoapRequestPrivate(const QUrl &url, QCoapMessage::MessageType type, +QCoapRequestPrivate::QCoapRequestPrivate(const QUrl &url, QCoapMessage::Type type, const QUrl &proxyUrl) : QCoapMessagePrivate(type), proxyUri(proxyUrl) @@ -114,7 +114,7 @@ void QCoapRequestPrivate::setUrl(const QUrl &url) Constructs a QCoapRequest object with the target \a url, the proxy URL \a proxyUrl and the \a type of the message. */ -QCoapRequest::QCoapRequest(const QUrl &url, MessageType type, const QUrl &proxyUrl) : +QCoapRequest::QCoapRequest(const QUrl &url, Type type, const QUrl &proxyUrl) : QCoapMessage(*new QCoapRequestPrivate(url, type, proxyUrl)) { } @@ -122,7 +122,7 @@ QCoapRequest::QCoapRequest(const QUrl &url, MessageType type, const QUrl &proxyU /*! Constructs a QCoapRequest from a string literal */ -QCoapRequest::QCoapRequest(const char *url, MessageType type) : +QCoapRequest::QCoapRequest(const char *url, Type type) : QCoapMessage(*new QCoapRequestPrivate(QUrl(QString::fromUtf8(url)), type)) { } diff --git a/src/coap/qcoaprequest.h b/src/coap/qcoaprequest.h index c833334..e506c83 100644 --- a/src/coap/qcoaprequest.h +++ b/src/coap/qcoaprequest.h @@ -46,10 +46,9 @@ class Q_COAP_EXPORT QCoapRequest : public QCoapMessage { public: explicit QCoapRequest(const QUrl &url = QUrl(), - MessageType type = MessageType::NonConfirmable, - const QUrl &proxyUrl = QUrl()); - explicit QCoapRequest(const char* url, - MessageType type = MessageType::NonConfirmable); + Type type = Type::NonConfirmable, + const QUrl &proxyUrl = QUrl()); + explicit QCoapRequest(const char* url, Type type = Type::NonConfirmable); QCoapRequest(const QCoapRequest &other); ~QCoapRequest(); diff --git a/src/coap/qcoaprequest_p.h b/src/coap/qcoaprequest_p.h index 67c26c6..eae236d 100644 --- a/src/coap/qcoaprequest_p.h +++ b/src/coap/qcoaprequest_p.h @@ -52,8 +52,8 @@ class Q_AUTOTEST_EXPORT QCoapRequestPrivate : public QCoapMessagePrivate { public: QCoapRequestPrivate(const QUrl &url = QUrl(), - QCoapMessage::MessageType type = QCoapMessage::MessageType::NonConfirmable, - const QUrl &proxyUrl = QUrl()); + QCoapMessage::Type type = QCoapMessage::Type::NonConfirmable, + const QUrl &proxyUrl = QUrl()); QCoapRequestPrivate(const QCoapRequestPrivate &other) = default; ~QCoapRequestPrivate(); |