From f563be8d40a35ef005587d4c54c428b07b39bb08 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Wed, 22 Nov 2017 10:23:38 +0100 Subject: [PATCH] AWS disconnect fixes --- libguh-core/awsconnector.cpp | 4 ++++ libguh-core/jsonrpc/configurationhandler.cpp | 16 ++++++++++++++++ libguh-core/jsonrpc/configurationhandler.h | 2 ++ tests/scripts/setcloudenabled.sh | 7 +++++++ 4 files changed, 29 insertions(+) create mode 100755 tests/scripts/setcloudenabled.sh diff --git a/libguh-core/awsconnector.cpp b/libguh-core/awsconnector.cpp index 54597fe6..c1ebc3ee 100644 --- a/libguh-core/awsconnector.cpp +++ b/libguh-core/awsconnector.cpp @@ -187,6 +187,10 @@ void AWSConnector::disconnectAWS() m_shouldReconnect = false; if (isConnected()) { m_client->Disconnect(std::chrono::seconds(2)); + m_client.reset(); + m_networkConnection.reset(); + qCDebug(dcAWS()) << "Disconnected from AWS."; + emit disconnected(); } } diff --git a/libguh-core/jsonrpc/configurationhandler.cpp b/libguh-core/jsonrpc/configurationhandler.cpp index 1e49e36a..ec3041ba 100644 --- a/libguh-core/jsonrpc/configurationhandler.cpp +++ b/libguh-core/jsonrpc/configurationhandler.cpp @@ -206,12 +206,18 @@ ConfigurationHandler::ConfigurationHandler(QObject *parent): params.insert("language", JsonTypes::basicTypeToString(JsonTypes::String)); setParams("LanguageChanged", params); + params.clear(); returns.clear(); + setDescription("CloudConfigurationChanged", "Emitted whenever the cloud configuration is changed."); + params.insert("enabled", JsonTypes::basicTypeToString(JsonTypes::Bool)); + setParams("CloudConfigurationChanged", params); + connect(GuhCore::instance()->configuration(), &GuhConfiguration::serverNameChanged, this, &ConfigurationHandler::onBasicConfigurationChanged); connect(GuhCore::instance()->configuration(), &GuhConfiguration::timeZoneChanged, this, &ConfigurationHandler::onBasicConfigurationChanged); connect(GuhCore::instance()->configuration(), &GuhConfiguration::localeChanged, this, &ConfigurationHandler::onBasicConfigurationChanged); connect(GuhCore::instance()->configuration(), &GuhConfiguration::tcpServerConfigurationChanged, this, &ConfigurationHandler::onTcpServerConfigurationChanged); connect(GuhCore::instance()->configuration(), &GuhConfiguration::webServerConfigurationChanged, this, &ConfigurationHandler::onWebServerConfigurationChanged); connect(GuhCore::instance()->configuration(), &GuhConfiguration::webSocketServerConfigurationChanged, this, &ConfigurationHandler::onWebSocketServerConfigurationChanged); + connect(GuhCore::instance()->configuration(), &GuhConfiguration::cloudEnabledChanged, this, &ConfigurationHandler::onCloudConfigurationChanged); connect(GuhCore::instance()->deviceManager(), &DeviceManager::languageUpdated, this, &ConfigurationHandler::onLanguageChanged); } @@ -442,6 +448,16 @@ void ConfigurationHandler::onWebSocketServerConfigurationChanged(const QString & emit WebSocketServerConfigurationChanged(params); } +void ConfigurationHandler::onCloudConfigurationChanged(bool enabled) +{ + QVariantMap params; + qCDebug(dcJanus()) << "Notification: cloud configuration changed"; + QVariantMap cloudConfiguration; + cloudConfiguration.insert("enabled", enabled); + params.insert("cloudConfiguration", cloudConfiguration); + emit CloudConfigurationChanged(params); +} + void ConfigurationHandler::onLanguageChanged() { QVariantMap params; diff --git a/libguh-core/jsonrpc/configurationhandler.h b/libguh-core/jsonrpc/configurationhandler.h index 5a1bad9a..b31adf3b 100644 --- a/libguh-core/jsonrpc/configurationhandler.h +++ b/libguh-core/jsonrpc/configurationhandler.h @@ -54,6 +54,7 @@ signals: void TcpServerConfigurationChanged(const QVariantMap ¶ms); void WebServerConfigurationChanged(const QVariantMap ¶ms); void WebSocketServerConfigurationChanged(const QVariantMap ¶ms); + void CloudConfigurationChanged(const QVariantMap ¶ms); void LanguageChanged(const QVariantMap ¶ms); private slots: @@ -61,6 +62,7 @@ private slots: void onTcpServerConfigurationChanged(const QString &id); void onWebServerConfigurationChanged(const QString &id); void onWebSocketServerConfigurationChanged(const QString &id); + void onCloudConfigurationChanged(bool enabled); void onLanguageChanged(); }; diff --git a/tests/scripts/setcloudenabled.sh b/tests/scripts/setcloudenabled.sh new file mode 100755 index 00000000..745ce052 --- /dev/null +++ b/tests/scripts/setcloudenabled.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +if [ "$2" == "" ]; then + echo "usage: $0 host " +else + (echo '{"id":1, "method":"Configuration.SetCloudEnabled", "params":{"enabled": "'$2'"}}'; sleep 10) | nc $1 2222 +fi