aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSona Kurazyan <sona.kurazyan@qt.io>2019-02-25 17:48:27 +0100
committerSona Kurazyan <sona.kurazyan@qt.io>2019-03-06 10:01:04 +0000
commit09d1d3bf20acfdb194f91e38ebfa67cc641f0119 (patch)
tree45cf2db5f3fd4cd8530fca0773bfd509eec0fead
parent6755d58fc8d14afb76616c7a116dd503d53657aa (diff)
Move resourcesFromCoreLinkList() where it fits better
Change-Id: I930f53462598fd7019da2144ddf1bf04dc5930c8 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
-rw-r--r--src/coap/qcoapdiscoveryreply.cpp45
-rw-r--r--src/coap/qcoapdiscoveryreply.h3
-rw-r--r--src/coap/qcoapprotocol.cpp43
-rw-r--r--src/coap/qcoapprotocol.h3
-rw-r--r--tests/auto/qcoapresource/tst_qcoapresource.cpp5
5 files changed, 50 insertions, 49 deletions
diff --git a/src/coap/qcoapdiscoveryreply.cpp b/src/coap/qcoapdiscoveryreply.cpp
index 379277a..def9d19 100644
--- a/src/coap/qcoapdiscoveryreply.cpp
+++ b/src/coap/qcoapdiscoveryreply.cpp
@@ -58,7 +58,7 @@ void QCoapDiscoveryReplyPrivate::_q_setContent(const QHostAddress &sender, const
if (QtCoap::isError(responseCode)) {
_q_setError(responseCode);
} else {
- auto res = QCoapProtocol::resourcesFromCoreLinkList(sender, message.payload());
+ auto res = QCoapDiscoveryReply::resourcesFromCoreLinkList(sender, message.payload());
resources.append(res);
emit q->discovered(q, res);
}
@@ -114,4 +114,47 @@ QVector<QCoapResource> QCoapDiscoveryReply::resources() const
return d->resources;
}
+/*!
+ Decodes the \a data received from the \a sender to a list of QCoapResource
+ objects. The \a data byte array contains the frame returned by the
+ discovery request.
+*/
+QVector<QCoapResource>
+QCoapDiscoveryReply::resourcesFromCoreLinkList(const QHostAddress &sender, const QByteArray &data)
+{
+ QVector<QCoapResource> resourceList;
+
+ QLatin1String quote = QLatin1String("\"");
+ const QList<QByteArray> links = data.split(',');
+ for (QByteArray link : links) {
+ QCoapResource resource;
+ resource.setHost(sender);
+
+ const QList<QByteArray> parameterList = link.split(';');
+ for (QByteArray parameter : parameterList) {
+ QString parameterString = QString::fromUtf8(parameter);
+ int length = parameterString.length();
+ if (parameter.startsWith('<'))
+ resource.setPath(parameterString.mid(1, length - 2));
+ else if (parameter.startsWith("title="))
+ resource.setTitle(parameterString.mid(6).remove(quote));
+ else if (parameter.startsWith("rt="))
+ resource.setResourceType(parameterString.mid(3).remove(quote));
+ else if (parameter.startsWith("if="))
+ resource.setInterface(parameterString.mid(3).remove(quote));
+ else if (parameter.startsWith("sz="))
+ resource.setMaximumSize(parameterString.mid(3).remove(quote).toInt());
+ else if (parameter.startsWith("ct="))
+ resource.setContentFormat(parameterString.mid(3).remove(quote).toUInt());
+ else if (parameter == "obs")
+ resource.setObservable(true);
+ }
+
+ if (!resource.path().isEmpty())
+ resourceList.push_back(resource);
+ }
+
+ return resourceList;
+}
+
QT_END_NAMESPACE
diff --git a/src/coap/qcoapdiscoveryreply.h b/src/coap/qcoapdiscoveryreply.h
index c09cef3..0a09ccf 100644
--- a/src/coap/qcoapdiscoveryreply.h
+++ b/src/coap/qcoapdiscoveryreply.h
@@ -48,6 +48,9 @@ public:
QVector<QCoapResource> resources() const;
+ static QVector<QCoapResource> resourcesFromCoreLinkList(
+ const QHostAddress &sender, const QByteArray &data);
+
Q_SIGNALS:
void discovered(QCoapDiscoveryReply *reply, QVector<QCoapResource> resources);
diff --git a/src/coap/qcoapprotocol.cpp b/src/coap/qcoapprotocol.cpp
index bdcb15c..5c71655 100644
--- a/src/coap/qcoapprotocol.cpp
+++ b/src/coap/qcoapprotocol.cpp
@@ -740,49 +740,6 @@ void QCoapProtocolPrivate::onConnectionError(QAbstractSocket::SocketError socket
}
/*!
- Decodes the \a data received from the \a sender to a list of QCoapResource
- objects. The \a data byte array contains the frame returned by the
- discovery request.
-*/
-QVector<QCoapResource> QCoapProtocol::resourcesFromCoreLinkList(const QHostAddress &sender,
- const QByteArray &data)
-{
- QVector<QCoapResource> resourceList;
-
- QLatin1String quote = QLatin1String("\"");
- const QList<QByteArray> links = data.split(',');
- for (QByteArray link : links) {
- QCoapResource resource;
- resource.setHost(sender);
-
- const QList<QByteArray> parameterList = link.split(';');
- for (QByteArray parameter : parameterList) {
- QString parameterString = QString::fromUtf8(parameter);
- int length = parameterString.length();
- if (parameter.startsWith('<'))
- resource.setPath(parameterString.mid(1, length - 2));
- else if (parameter.startsWith("title="))
- resource.setTitle(parameterString.mid(6).remove(quote));
- else if (parameter.startsWith("rt="))
- resource.setResourceType(parameterString.mid(3).remove(quote));
- else if (parameter.startsWith("if="))
- resource.setInterface(parameterString.mid(3).remove(quote));
- else if (parameter.startsWith("sz="))
- resource.setMaximumSize(parameterString.mid(3).remove(quote).toInt());
- else if (parameter.startsWith("ct="))
- resource.setContentFormat(parameterString.mid(3).remove(quote).toUInt());
- else if (parameter == "obs")
- resource.setObservable(true);
- }
-
- if (!resource.path().isEmpty())
- resourceList.push_back(resource);
- }
-
- return resourceList;
-}
-
-/*!
\internal
Registers a new CoAP exchange using \a token.
diff --git a/src/coap/qcoapprotocol.h b/src/coap/qcoapprotocol.h
index 4f37366..f1675c4 100644
--- a/src/coap/qcoapprotocol.h
+++ b/src/coap/qcoapprotocol.h
@@ -65,9 +65,6 @@ public:
uint nonConfirmLifetime() const;
uint maxServerResponseDelay() const;
- static QVector<QCoapResource> resourcesFromCoreLinkList(
- const QHostAddress &sender, const QByteArray &data);
-
Q_SIGNALS:
void finished(QCoapReply *reply);
void responseToMulticastReceived(QCoapReply *reply, const QCoapMessage& message);
diff --git a/tests/auto/qcoapresource/tst_qcoapresource.cpp b/tests/auto/qcoapresource/tst_qcoapresource.cpp
index 63fe88f..0d54029 100644
--- a/tests/auto/qcoapresource/tst_qcoapresource.cpp
+++ b/tests/auto/qcoapresource/tst_qcoapresource.cpp
@@ -32,7 +32,7 @@
#include <QCoreApplication>
#include <QtCoap/qcoapresource.h>
-#include <QtCoap/qcoapprotocol.h>
+#include <QtCoap/qcoapdiscoveryreply.h>
class tst_QCoapResource : public QObject
{
@@ -144,7 +144,8 @@ void tst_QCoapResource::parseCoreLink()
QFETCH(QList<bool>, observableList);
QFETCH(QByteArray, coreLinkList);
- const QVector<QCoapResource> resourceList = QCoapProtocol::resourcesFromCoreLinkList(QHostAddress(senderAddress), coreLinkList);
+ const QVector<QCoapResource> resourceList =
+ QCoapDiscoveryReply::resourcesFromCoreLinkList(QHostAddress(senderAddress), coreLinkList);
QCOMPARE(resourceList.size(), resourceNumber);