make it build with older qt

pull/135/head
Michael Zanetti 2017-10-04 19:21:45 +02:00
parent c040a71cdb
commit 896f5e73a7
2 changed files with 34 additions and 7 deletions

View File

@ -35,7 +35,8 @@ QHash<quint16, AWSConnector*> AWSConnector::s_requestMap;
AWSConnector::AWSConnector(QObject *parent) : QObject(parent)
{
connect(this, &AWSConnector::connected, this, &AWSConnector::onConnected);
connect(this, &AWSConnector::connected, this, &AWSConnector::onConnected, Qt::QueuedConnection);
connect(this, &AWSConnector::disconnected, this, &AWSConnector::onDisconnected, Qt::QueuedConnection);
}
AWSConnector::~AWSConnector()
@ -44,6 +45,7 @@ AWSConnector::~AWSConnector()
void AWSConnector::connect2AWS(const QString &endpoint, const QString &clientId, const QString &clientName, const QString &caFile, const QString &clientCertFile, const QString &clientPrivKeyFile)
{
m_reconnect = true;
m_networkConnection = std::shared_ptr<MbedTLSConnection>(new MbedTLSConnection(
endpoint.toStdString(),
8883,
@ -56,8 +58,7 @@ void AWSConnector::connect2AWS(const QString &endpoint, const QString &clientId,
true
));
m_client = MqttClient::Create(m_networkConnection, std::chrono::milliseconds(30000));
m_client->SetDisconnectCallbackPtr(&onDisconnected, std::shared_ptr<DisconnectCallbackContextData>(this));
m_client->SetAutoReconnectEnabled(true);
m_client->SetDisconnectCallbackPtr(&onDisconnectedCallback, std::shared_ptr<DisconnectCallbackContextData>(this));
m_clientId = clientId;
m_clientName = clientName;
@ -78,6 +79,7 @@ DisconnectCallbackContextData::~DisconnectCallbackContextData() {}
void AWSConnector::disconnectAWS()
{
m_reconnect = false;
if (isConnected()) {
m_client->Disconnect(std::chrono::seconds(2));
}
@ -125,9 +127,28 @@ quint16 AWSConnector::publish(const QString &topic, const QVariantMap &message)
void AWSConnector::onConnected()
{
qCDebug(dcAWS()) << "AWS connected";
m_client->SetAutoReconnectEnabled(true);
registerDevice();
}
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();
}
});
}
}
void AWSConnector::retrievePairedDeviceInfo()
{
QVariantMap params;
@ -154,7 +175,7 @@ void AWSConnector::setName()
{
QVariantMap params;
params.insert("id", ++m_transactionId);
params.insert("timestamp", QDateTime::currentSecsSinceEpoch());
params.insert("timestamp", QDateTime::currentMSecsSinceEpoch() / 1000);
params.insert("command", "postName");
params.insert("name", m_clientName);
publish(QString("%1/device/name").arg(m_clientId), params);
@ -216,7 +237,7 @@ void AWSConnector::subscribeCallback(uint16_t actionId, ResponseCode rc)
return;
}
qCDebug(dcAWS()) << "Subscribe callback for action" << actionId;
qCDebug(dcAWSTraffic()) << "Successfully subscribed (actionId:" << actionId << ")";
}
ResponseCode AWSConnector::onSubscriptionReceivedCallback(util::String topic_name, util::String payload, std::shared_ptr<SubscriptionHandlerContextData> p_app_handler_data)
@ -286,9 +307,12 @@ ResponseCode AWSConnector::onSubscriptionReceivedCallback(util::String topic_nam
return ResponseCode::SUCCESS;
}
ResponseCode AWSConnector::onDisconnected(util::String mqtt_client_id, std::shared_ptr<DisconnectCallbackContextData> p_app_handler_data)
ResponseCode AWSConnector::onDisconnectedCallback(util::String mqtt_client_id, std::shared_ptr<DisconnectCallbackContextData> p_app_handler_data)
{
Q_UNUSED(p_app_handler_data)
qCDebug(dcAWS()) << "disconnected" << QString::fromStdString(mqtt_client_id);
// AWSConnector* connector = static_cast<AWSConnector*>(p_app_handler_data.get());
// emit connector->disconnected();
return ResponseCode::SUCCESS;
}

View File

@ -45,11 +45,13 @@ public:
signals:
void connected();
void disconnected();
void devicePaired(const QString &cognritoUserId, int errorCode);
void webRtcHandshakeMessageReceived(const QString &transactionId, const QVariantMap &data);
private slots:
void onConnected();
void onDisconnected();
void retrievePairedDeviceInfo();
void registerDevice();
void setName();
@ -61,12 +63,13 @@ private:
static void subscribeCallback(uint16_t actionId, awsiotsdk::ResponseCode rc);
static awsiotsdk::ResponseCode onSubscriptionReceivedCallback(awsiotsdk::util::String topic_name, awsiotsdk::util::String payload,
std::shared_ptr<SubscriptionHandlerContextData> p_app_handler_data);
static awsiotsdk::ResponseCode onDisconnected(awsiotsdk::util::String mqtt_client_id,
static awsiotsdk::ResponseCode onDisconnectedCallback(awsiotsdk::util::String mqtt_client_id,
std::shared_ptr<DisconnectCallbackContextData> p_app_handler_data);
private:
std::shared_ptr<awsiotsdk::network::MbedTLSConnection> m_networkConnection;
std::shared_ptr<awsiotsdk::MqttClient> m_client;
bool m_reconnect = false;
QString m_clientId;
QString m_clientName;