From fed7dad2b62ca1d8742922bc0c38bbf7866cc852 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 30 Sep 2014 14:36:32 -0700 Subject: [PATCH] use an auto_ptr to be able to reset the AccountManager --- domain-server/src/DomainServer.cpp | 5 +++++ libraries/networking/src/AccountManager.cpp | 11 ++++++++--- libraries/networking/src/AccountManager.h | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index eccd52dfc1..fb475f681d 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -81,6 +81,11 @@ DomainServer::DomainServer(int argc, char* argv[]) : void DomainServer::restart() { qDebug() << "domain-server is restarting."; + + // make sure all static instances are reset + LimitedNodeList::getInstance()->reset(); + AccountManager::getInstance(true); + exit(DomainServer::EXIT_CODE_REBOOT); } diff --git a/libraries/networking/src/AccountManager.cpp b/libraries/networking/src/AccountManager.cpp index 88e4bad7b2..015f86c3e6 100644 --- a/libraries/networking/src/AccountManager.cpp +++ b/libraries/networking/src/AccountManager.cpp @@ -25,9 +25,14 @@ const bool VERBOSE_HTTP_REQUEST_DEBUGGING = false; -AccountManager& AccountManager::getInstance() { - static AccountManager sharedInstance; - return sharedInstance; +AccountManager& AccountManager::getInstance(bool forceReset) { + static std::auto_ptr sharedInstance(new AccountManager()); + + if (forceReset) { + sharedInstance.reset(new AccountManager()); + } + + return *sharedInstance; } Q_DECLARE_METATYPE(OAuthAccessToken) diff --git a/libraries/networking/src/AccountManager.h b/libraries/networking/src/AccountManager.h index edccab0b75..8d1a127408 100644 --- a/libraries/networking/src/AccountManager.h +++ b/libraries/networking/src/AccountManager.h @@ -42,7 +42,7 @@ const QByteArray ACCESS_TOKEN_AUTHORIZATION_HEADER = "Authorization"; class AccountManager : public QObject { Q_OBJECT public: - static AccountManager& getInstance(); + static AccountManager& getInstance(bool forceReset = false); void authenticatedRequest(const QString& path, QNetworkAccessManager::Operation operation = QNetworkAccessManager::GetOperation,