Index: CloudConnect/CloudConnectController.cpp =================================================================== diff -u -r59b4c22f45a1d098064a886452769204e90cfb4b -r51e99f2578e0901d9da91a4cb60d1b8858cfe971 --- CloudConnect/CloudConnectController.cpp (.../CloudConnectController.cpp) (revision 59b4c22f45a1d098064a886452769204e90cfb4b) +++ CloudConnect/CloudConnectController.cpp (.../CloudConnectController.cpp) (revision 51e99f2578e0901d9da91a4cb60d1b8858cfe971) @@ -39,7 +39,7 @@ _settings(configPath, QSettings::IniFormat), _canInterface(this), _dispatcher(this), - _publisher(this) + _mqttClient(this) { loadMsgHandling(msgHandlingPath); @@ -109,10 +109,10 @@ /*! * \brief CloudConnectController::connectToCloud - * \details Builds the MQTT transport from the [Mqtt] settings and starts connecting. + * \details Configures the MQTT interface from the [Mqtt] settings and starts connecting. * \return true if the attempt was started, or if MQTT is disabled. - * \note Must run on the controller thread, after initThread(). MqttTcpTransport - * owns a QTcpSocket, which belongs to the thread that constructs it. + * \note Must run on the controller thread, after initThread(). The interface's + * QMqttClient socket belongs to the thread that constructs it. */ bool CloudConnectController::connectToCloud() { @@ -125,25 +125,23 @@ return true; } - MqttTransport::Config config; - config.endpoint = _settings.value("Mqtt/ServerAddress", QStringLiteral("127.0.0.1")).toString(); - config.port = static_cast(_settings.value("Mqtt/Port", 1883).toUInt()); - _topicPrefix = _settings.value("Mqtt/TopicPrefix", QStringLiteral("diality/v1/devices")).toString(); _deviceId = _settings.value("Mqtt/DeviceId", QStringLiteral("test_device")).toString(); - _mqttTransport = QSharedPointer::create(); - if (!_publisher.init(_mqttTransport, config)) { - qCritical().noquote() << "CloudConnect: could not initialise the MQTT publisher"; + MqttClient::Config config; + config.endpoint = _settings.value("Mqtt/ServerAddress", QStringLiteral("127.0.0.1")).toString(); + config.port = static_cast(_settings.value("Mqtt/Port", 1883).toUInt()); + config.clientId = _deviceId; + config.caPath = _settings.value("Mqtt/CaFile").toString(); + config.certPath = _settings.value("Mqtt/CertFile").toString(); + config.keyPath = _settings.value("Mqtt/KeyFile").toString(); + + if (!_mqttClient.init(config)) { + qCritical().noquote() << "CloudConnect: could not initialise the MQTT interface"; return false; } - connect(&_publisher, &MqttPublisher::didConnectionChange, - this, &CloudConnectController::onCloudConnectionChange); - connect(&_publisher, &MqttPublisher::didPublishAck, - this, &CloudConnectController::onPublishAck); - - return _publisher.open(); + return _mqttClient.open(); } /*! @@ -260,7 +258,7 @@ // TODO: temporary for capture protobuf // captureProtobuf(payload); - const bool published = _mqttEnabled && _publisher.publish(mqttTopic(it->topic), payload); + const bool published = _mqttEnabled && _mqttClient.publish(mqttTopic(it->topic), payload); if (_mqttEnabled && !published) { qWarning().noquote() << QString("CloudConnect: could not publish %1 (0x%2), message lost") .arg(leahi::msgIdString(leahi::MsgId(msg.msgId))).arg(msg.msgId, 4, 16, QChar('0')); @@ -298,34 +296,6 @@ } /*! - * \brief CloudConnectController::onCloudConnectionChange - * \details Logs MQTT session transitions. - * \param connected - true when the session came up - */ -void CloudConnectController::onCloudConnectionChange(bool connected) -{ - if (connected) { - qInfo().noquote() << "CloudConnect: MQTT session established"; - } - else { - qWarning().noquote() << "CloudConnect: MQTT session lost, messages are not reaching the cloud"; - } -} - -/*! - * \brief CloudConnectController::onPublishAck - * \details Reports the outcome of attempting to publish a message. - * \param messageId - correlation token passed to publish(); -1 when unused - * \param success - true when the broker acknowledged the message - */ -void CloudConnectController::onPublishAck(qint64 messageId, bool success) -{ - if (!success) { - qWarning().noquote() << "CloudConnect: publish was not acknowledged, id=" << messageId; - } -} - -/*! * \brief CloudConnectController::captureProtobuf * \details Appends one varint-delimited protobuf record to the .ser capture file and * the equivalent json to .json capture file.