From a2cffbc5fc07aeb43295f20acc2a766951afde52 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Wed, 4 Oct 2017 20:42:45 +0200 Subject: [PATCH] +use real id --- libguh-core/awsconnector.cpp | 45 +++++++++++++++--------------------- libguh-core/awsconnector.h | 1 + libguh-core/cloudmanager.cpp | 4 ++-- 3 files changed, 21 insertions(+), 29 deletions(-) diff --git a/libguh-core/awsconnector.cpp b/libguh-core/awsconnector.cpp index 6524fd93..4ee47371 100644 --- a/libguh-core/awsconnector.cpp +++ b/libguh-core/awsconnector.cpp @@ -57,22 +57,12 @@ void AWSConnector::connect2AWS(const QString &endpoint, const QString &clientId, std::chrono::milliseconds(30000), true )); - m_client = MqttClient::Create(m_networkConnection, std::chrono::milliseconds(30000)); - m_client->SetDisconnectCallbackPtr(&onDisconnectedCallback, std::shared_ptr(this)); + m_client = MqttClient::Create(m_networkConnection, std::chrono::milliseconds(30000), &onDisconnectedCallback, std::shared_ptr(this)); m_clientId = clientId; m_clientName = clientName; qCDebug(dcAWS()) << "Connecting to AWS with ID:" << m_clientId << "endpoint:" << endpoint; - m_connectingFuture = QtConcurrent::run([&]() { - ResponseCode rc = m_client->Connect(std::chrono::milliseconds(30000), true, mqtt::Version::MQTT_3_1_1, std::chrono::seconds(60), Utf8String::Create(m_clientId.toStdString()), nullptr, nullptr, nullptr); - if (rc == ResponseCode::MQTT_CONNACK_CONNECTION_ACCEPTED) { - emit connected(); - } else { - qCWarning(dcAWS) << "Error connecting to AWS. Response code:" << QString::fromStdString(ResponseHelper::ToString(rc)); - m_client.reset(); - m_networkConnection.reset(); - } - }); + doConnect(); } DisconnectCallbackContextData::~DisconnectCallbackContextData() {} @@ -124,6 +114,19 @@ quint16 AWSConnector::publish(const QString &topic, const QVariantMap &message) return packetId; } +void AWSConnector::doConnect() +{ + qCDebug(dcAWS()) << "(re)connecting..."; + m_connectingFuture = QtConcurrent::run([&]() { + ResponseCode rc = m_client->Connect(std::chrono::milliseconds(30000), true, mqtt::Version::MQTT_3_1_1, std::chrono::seconds(60), Utf8String::Create(m_clientId.toStdString()), nullptr, nullptr, nullptr); + if (rc == ResponseCode::MQTT_CONNACK_CONNECTION_ACCEPTED) { + emit connected(); + } else { + qCWarning(dcAWS) << "Error connecting to AWS. Response code:" << QString::fromStdString(ResponseHelper::ToString(rc)); + } + }); +} + void AWSConnector::onConnected() { qCDebug(dcAWS()) << "AWS connected"; @@ -135,17 +138,7 @@ void AWSConnector::onDisconnected() { qCDebug(dcAWS()) << "AWS disconnected."; if (m_reconnect) { - qCDebug(dcAWS()) << "Reconnecting..."; - m_connectingFuture = QtConcurrent::run([&]() { - ResponseCode rc = m_client->Connect(std::chrono::milliseconds(30000), true, mqtt::Version::MQTT_3_1_1, std::chrono::seconds(60), Utf8String::Create(m_clientId.toStdString()), nullptr, nullptr, nullptr); - if (rc == ResponseCode::MQTT_CONNACK_CONNECTION_ACCEPTED) { - emit connected(); - } else { - qCWarning(dcAWS) << "Error connecting to AWS. Response code:" << QString::fromStdString(ResponseHelper::ToString(rc)); - m_client.reset(); - m_networkConnection.reset(); - } - }); + QTimer::singleShot(10000, this, &AWSConnector::doConnect); } } @@ -309,10 +302,8 @@ ResponseCode AWSConnector::onSubscriptionReceivedCallback(util::String topic_nam ResponseCode AWSConnector::onDisconnectedCallback(util::String mqtt_client_id, std::shared_ptr p_app_handler_data) { - Q_UNUSED(p_app_handler_data) - qCDebug(dcAWS()) << "disconnected" << QString::fromStdString(mqtt_client_id); - -// AWSConnector* connector = static_cast(p_app_handler_data.get()); + qCDebug(dcAWS()) << "disconnected" << QString::fromStdString(mqtt_client_id) << p_app_handler_data.get(); +// AWSConnector* connector = dynamic_cast(p_app_handler_data.get()); // emit connector->disconnected(); return ResponseCode::SUCCESS; } diff --git a/libguh-core/awsconnector.h b/libguh-core/awsconnector.h index a6b0ba00..c6728156 100644 --- a/libguh-core/awsconnector.h +++ b/libguh-core/awsconnector.h @@ -50,6 +50,7 @@ signals: void webRtcHandshakeMessageReceived(const QString &transactionId, const QVariantMap &data); private slots: + void doConnect(); void onConnected(); void onDisconnected(); void retrievePairedDeviceInfo(); diff --git a/libguh-core/cloudmanager.cpp b/libguh-core/cloudmanager.cpp index dd366207..d3096048 100644 --- a/libguh-core/cloudmanager.cpp +++ b/libguh-core/cloudmanager.cpp @@ -111,8 +111,8 @@ void CloudManager::pairDevice(const QString &idToken, const QString &authToken, void CloudManager::connect2aws() { m_awsConnector->connect2AWS(m_serverUrl, - "1e10fb7e-d9d9-4145-88dd-2d3caf623c18", // micha's test id (needs micha's test certs) - remove that before merging -// m_deviceId.toString().remove(QRegExp("[{}]*")), +// "1e10fb7e-d9d9-4145-88dd-2d3caf623c18", // micha's test id (needs micha's test certs) - remove that before merging + m_deviceId.toString().remove(QRegExp("[{}]*")), m_deviceName, m_caCertificate, m_clientCertificate,