From 050d223b3a6a7fc769afc03223e406942a047e5d Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 24 Feb 2014 13:33:52 -0800 Subject: [PATCH] add domain connection reset to NodeList reset --- assignment-client/src/AssignmentClient.cpp | 1 - libraries/shared/src/DomainInfo.cpp | 20 ++++++++++++++++---- libraries/shared/src/DomainInfo.h | 6 ++++-- libraries/shared/src/NodeList.cpp | 3 +++ 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/assignment-client/src/AssignmentClient.cpp b/assignment-client/src/AssignmentClient.cpp index 4671989ade..54110c7471 100644 --- a/assignment-client/src/AssignmentClient.cpp +++ b/assignment-client/src/AssignmentClient.cpp @@ -205,6 +205,5 @@ void AssignmentClient::assignmentCompleted() { // reset our NodeList by switching back to unassigned and clearing the list nodeList->setOwnerType(NodeType::Unassigned); nodeList->reset(); - nodeList->getDomainInfo().reset(); nodeList->resetNodeInterestSet(); } diff --git a/libraries/shared/src/DomainInfo.cpp b/libraries/shared/src/DomainInfo.cpp index fff3cc1ed6..bed638bf59 100644 --- a/libraries/shared/src/DomainInfo.cpp +++ b/libraries/shared/src/DomainInfo.cpp @@ -26,11 +26,8 @@ DomainInfo::DomainInfo() : connect(&AccountManager::getInstance(), &AccountManager::logoutComplete, this, &DomainInfo::logout); } -void DomainInfo::reset() { +void DomainInfo::clearConnectionInfo() { _uuid = QUuid(); - _hostname = QString(); - _sockAddr.setAddress(QHostAddress::Null); - _assignmentUUID = QUuid(); _connectionSecret = QUuid(); _registrationToken = QByteArray(); _rootAuthenticationURL = QUrl(); @@ -38,6 +35,12 @@ void DomainInfo::reset() { _isConnected = false; } +void DomainInfo::reset() { + clearConnectionInfo(); + _hostname = QString(); + _sockAddr.setAddress(QHostAddress::Null); +} + void DomainInfo::parseAuthInformationFromJsonObject(const QJsonObject& jsonObject) { QJsonObject dataObject = jsonObject["data"].toObject(); _connectionSecret = QUuid(dataObject["connection_secret"].toString()); @@ -45,6 +48,15 @@ void DomainInfo::parseAuthInformationFromJsonObject(const QJsonObject& jsonObjec _publicKey = dataObject["public_key"].toString(); } +void DomainInfo::setSockAddr(const HifiSockAddr& sockAddr) { + if (_sockAddr != sockAddr) { + // we should reset on a sockAddr change + reset(); + // change the sockAddr + _sockAddr = sockAddr; + } +} + void DomainInfo::setHostname(const QString& hostname) { if (hostname != _hostname) { diff --git a/libraries/shared/src/DomainInfo.h b/libraries/shared/src/DomainInfo.h index 5dc04d58c7..35564e7cd8 100644 --- a/libraries/shared/src/DomainInfo.h +++ b/libraries/shared/src/DomainInfo.h @@ -24,7 +24,7 @@ class DomainInfo : public QObject { public: DomainInfo(); - void reset(); + void clearConnectionInfo(); void parseAuthInformationFromJsonObject(const QJsonObject& jsonObject); @@ -38,7 +38,7 @@ public: void setIPToLocalhost() { _sockAddr.setAddress(QHostAddress(QHostAddress::LocalHost)); } const HifiSockAddr& getSockAddr() { return _sockAddr; } - void setSockAddr(const HifiSockAddr& sockAddr) { _sockAddr = sockAddr; } + void setSockAddr(const HifiSockAddr& sockAddr); unsigned short getPort() const { return _sockAddr.getPort(); } @@ -64,6 +64,8 @@ signals: void hostnameChanged(const QString& hostname); void connectedToDomain(const QString& hostname); private: + void reset(); + QUuid _uuid; QString _hostname; HifiSockAddr _sockAddr; diff --git a/libraries/shared/src/NodeList.cpp b/libraries/shared/src/NodeList.cpp index 8f8d9dfac3..772e75c820 100644 --- a/libraries/shared/src/NodeList.cpp +++ b/libraries/shared/src/NodeList.cpp @@ -328,6 +328,9 @@ void NodeList::reset() { // refresh the owner UUID to the NULL UUID setSessionUUID(QUuid()); + + // clear the domain connection information + _domainInfo.clearConnectionInfo(); } void NodeList::addNodeTypeToInterestSet(NodeType_t nodeTypeToAdd) {