Quick MQTT Example▲
Sélectionnez
// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include
"qmlmqttclient.h"
#include <QDebug>
QmlMqttSubscription::
QmlMqttSubscription(QMqttSubscription *
s, QmlMqttClient *
c)
:
sub(s)
, client(c)
{
connect(sub, &
amp;QMqttSubscription::
messageReceived, this
, &
amp;QmlMqttSubscription::
handleMessage);
m_topic =
sub-&
gt;topic();
}
QmlMqttSubscription::
~
QmlMqttSubscription()
{
}
QmlMqttClient::
QmlMqttClient(QObject *
parent)
:
QObject(parent)
{
connect(&
amp;m_client, &
amp;QMqttClient::
hostnameChanged, this
, &
amp;QmlMqttClient::
hostnameChanged);
connect(&
amp;m_client, &
amp;QMqttClient::
portChanged, this
, &
amp;QmlMqttClient::
portChanged);
connect(&
amp;m_client, &
amp;QMqttClient::
stateChanged, this
, &
amp;QmlMqttClient::
stateChanged);
}
void
QmlMqttClient::
connectToHost()
{
m_client.connectToHost();
}
void
QmlMqttClient::
disconnectFromHost()
{
m_client.disconnectFromHost();
}
QmlMqttSubscription*
QmlMqttClient::
subscribe(const
QString &
amp;topic)
{
auto
sub =
m_client.subscribe(topic, 0
);
auto
result =
new
QmlMqttSubscription(sub, this
);
return
result;
}
void
QmlMqttSubscription::
handleMessage(const
QMqttMessage &
amp;qmsg)
{
emit messageReceived(qmsg.payload());
}
const
QString QmlMqttClient::
hostname() const
{
return
m_client.hostname();
}
void
QmlMqttClient::
setHostname(const
QString &
amp;newHostname)
{
m_client.setHostname(newHostname);
}
int
QmlMqttClient::
port() const
{
return
m_client.port();
}
void
QmlMqttClient::
setPort(int
newPort)
{
if
(newPort &
lt; 0
||
newPort &
gt; std::
numeric_limits&
lt;quint16&
gt;::
max()) {
qWarning() &
lt;&
lt; "Trying to set invalid port number"
;
return
;
}
m_client.setPort(static_cast
&
lt;quint16&
gt;(newPort));
}
const
QMqttClient::
ClientState QmlMqttClient::
state() const
{
return
m_client.state();
}
void
QmlMqttClient::
setState(const
QMqttClient::
ClientState &
amp;newState)
{
m_client.setState(newState);
}