Quick CoAP Multicast Discovery Example
// Copyright (C) 2019 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #include "qmlcoapmulticastclient.h" #include <QCoapResourceDiscoveryReply> #include <QLoggingCategory> Q_LOGGING_CATEGORY(lcCoapClient, "qt.coap.client") QmlCoapMulticastClient::QmlCoapMulticastClient(QObject *parent) : QCoapClient(QtCoap::SecurityMode::NoSecurity, parent) { connect(this, &QCoapClient::finished, this, [this](QCoapReply *reply) { if (reply) emit finished(static_cast<int>(reply->errorReceived())); else qCWarning(lcCoapClient, "Something went wrong, received a null reply"); }); } void QmlCoapMulticastClient::discover(const QString &host, int port, const QString &discoveryPath) { QUrl url; url.setHost(host); url.setPort(port); QCoapResourceDiscoveryReply *discoverReply = QCoapClient::discover(url, discoveryPath); if (discoverReply) { connect(discoverReply, &QCoapResourceDiscoveryReply::discovered, this, &QmlCoapMulticastClient::onDiscovered); } else { qCWarning(lcCoapClient, "Discovery request failed."); } } void QmlCoapMulticastClient::discover(QtCoap::MulticastGroup group, int port, const QString &discoveryPath) { QCoapResourceDiscoveryReply *discoverReply = QCoapClient::discover(group, port, discoveryPath); if (discoverReply) { connect(discoverReply, &QCoapResourceDiscoveryReply::discovered, this, &QmlCoapMulticastClient::onDiscovered); } else { qCWarning(lcCoapClient, "Discovery request failed."); } } void QmlCoapMulticastClient::onDiscovered(QCoapResourceDiscoveryReply *reply, const QList<QCoapResource> &resources) { Q_UNUSED(reply) for (auto resource : resources) emit discovered(resource); }