mqttthread.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "mqttthread.h"
  2. #include "./mqtt/mqttclient.h"
  3. #include "logger.h"
  4. MqttThread::MqttThread(QObject *parent) : QThread(parent) {}
  5. MqttThread::~MqttThread() { stopThread(); }
  6. void MqttThread::setConnectionInfo(const QString &hostname, quint16 port, const QString &username,
  7. const QString &password, const QString &clientId,
  8. const QStringList &topicsToSubscribe) {
  9. m_hostname = hostname;
  10. m_port = port;
  11. m_username = username;
  12. m_password = password;
  13. m_clientId = clientId;
  14. m_topicsToSubscribe = topicsToSubscribe;
  15. }
  16. MqttClient *MqttThread::getMqttClient() const { return mqttClient; }
  17. void MqttThread::stopThread() {
  18. mqttClient->disconnectFromMqttBroker();
  19. m_stopFlag = true;
  20. Logger::getInstance().info("MqttThread: 停止线程请求已发送");
  21. quit();
  22. wait(3000);
  23. }
  24. void MqttThread::run() {
  25. // mqttClient = new MqttClient();
  26. mqttClient = MqttClient::createNewInstance();
  27. mqttClient->connectToMqttBroker(m_hostname, m_port, m_username, m_password, m_clientId, m_topicsToSubscribe);
  28. connect(mqttClient, &MqttClient::connected, this, &MqttThread::mqttConnected);
  29. connect(mqttClient, &MqttClient::disConnected, this, &MqttThread::mqttDisconnected);
  30. connect(mqttClient, &MqttClient::messageReceived, this, &MqttThread::projectMqttMessageReceived);
  31. connect(this, &MqttThread::sendMessageRequested, mqttClient, &MqttClient::sendMessage);
  32. while (!m_stopFlag) {
  33. exec();
  34. }
  35. }
  36. void MqttThread::sendMqttMessage(const QString &topic, const QByteArray &message, quint8 qos, bool isRetainedMsg) {
  37. if (mqttClient) {
  38. Logger::getInstance().info(QString("Mqtt thread 发送MQTT消息到主题: %1, 消息: %2, qos: %3, isRetainMsg: %4")
  39. .arg(topic, QString(message), qos, isRetainedMsg ? "true" : "false"));
  40. mqttClient->sendMessage(topic, message, qos, isRetainedMsg);
  41. }
  42. }