From 072343ce790dab3c362492bb27dc14b268ec4b8b Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 20 May 2014 15:50:09 -0700 Subject: [PATCH] associate assignment wallet UUID with node via DomainServerNodeData --- domain-server/src/DomainServer.cpp | 47 ++++++++++++---------- domain-server/src/DomainServerNodeData.cpp | 1 + domain-server/src/DomainServerNodeData.h | 4 ++ 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index 816e014c23..56d645ed24 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -342,8 +342,19 @@ void DomainServer::handleConnectRequest(const QByteArray& packet, const HifiSock // check if this connect request matches an assignment in the queue bool isAssignment = _pendingAssignedNodes.contains(packetUUID); SharedAssignmentPointer matchingQueuedAssignment = SharedAssignmentPointer(); + PendingAssignedNodeData* pendingAssigneeData = NULL; if (isAssignment) { - matchingQueuedAssignment = matchingQueuedAssignmentForCheckIn(packetUUID, nodeType); + pendingAssigneeData = _pendingAssignedNodes.take(packetUUID); + if (pendingAssigneeData) { + matchingQueuedAssignment = matchingQueuedAssignmentForCheckIn(packetUUID, nodeType); + + if (matchingQueuedAssignment) { + qDebug() << "Assignment deployed with" << uuidStringWithoutCurlyBraces(packetUUID) + << "matches unfulfilled assignment" + << uuidStringWithoutCurlyBraces(matchingQueuedAssignment->getUUID()); + } + } + } if (!matchingQueuedAssignment && !_oauthProviderURL.isEmpty() && _argumentVariantMap.contains(ALLOWED_ROLES_CONFIG_KEY)) { @@ -387,6 +398,10 @@ void DomainServer::handleConnectRequest(const QByteArray& packet, const HifiSock if (isAssignment) { nodeData->setAssignmentUUID(matchingQueuedAssignment->getUUID()); + nodeData->setWalletUUID(pendingAssigneeData->getWalletUUID()); + + // now that we've pulled the wallet UUID and added the node to our list, delete the pending assignee data + delete pendingAssigneeData; } nodeData->setSendingSockAddr(senderSockAddr); @@ -1076,28 +1091,18 @@ void DomainServer::nodeKilled(SharedNodePointer node) { } } -SharedAssignmentPointer DomainServer::matchingQueuedAssignmentForCheckIn(const QUuid& checkInUUID, NodeType_t nodeType) { +SharedAssignmentPointer DomainServer::matchingQueuedAssignmentForCheckIn(const QUuid& assignmentUUID, NodeType_t nodeType) { QQueue::iterator i = _unfulfilledAssignments.begin(); - PendingAssignedNodeData* pendingAssigneeData = _pendingAssignedNodes.take(checkInUUID); - - if (pendingAssigneeData) { - while (i != _unfulfilledAssignments.end()) { - if (i->data()->getType() == Assignment::typeForNodeType(nodeType) - && i->data()->getUUID() == pendingAssigneeData->getAssignmentUUID()) { - // we have an unfulfilled assignment to return - qDebug() << "Assignment deployed with" << uuidStringWithoutCurlyBraces(checkInUUID) - << "matches unfulfilled assignment" - << uuidStringWithoutCurlyBraces(pendingAssigneeData->getAssignmentUUID()); - - // first clear the pending assignee data - delete pendingAssigneeData; - - // return the matching assignment - return _unfulfilledAssignments.takeAt(i - _unfulfilledAssignments.begin()); - } else { - ++i; - } + while (i != _unfulfilledAssignments.end()) { + if (i->data()->getType() == Assignment::typeForNodeType(nodeType) + && i->data()->getUUID() == assignmentUUID) { + // we have an unfulfilled assignment to return + + // return the matching assignment + return _unfulfilledAssignments.takeAt(i - _unfulfilledAssignments.begin()); + } else { + ++i; } } diff --git a/domain-server/src/DomainServerNodeData.cpp b/domain-server/src/DomainServerNodeData.cpp index a43e17ae60..bdf088c19e 100644 --- a/domain-server/src/DomainServerNodeData.cpp +++ b/domain-server/src/DomainServerNodeData.cpp @@ -20,6 +20,7 @@ DomainServerNodeData::DomainServerNodeData() : _sessionSecretHash(), _assignmentUUID(), + _walletUUID(), _statsJSONObject(), _sendingSockAddr(), _isAuthenticated(true) diff --git a/domain-server/src/DomainServerNodeData.h b/domain-server/src/DomainServerNodeData.h index 011bee57c1..a8935bea00 100644 --- a/domain-server/src/DomainServerNodeData.h +++ b/domain-server/src/DomainServerNodeData.h @@ -30,6 +30,9 @@ public: void setAssignmentUUID(const QUuid& assignmentUUID) { _assignmentUUID = assignmentUUID; } const QUuid& getAssignmentUUID() const { return _assignmentUUID; } + void setWalletUUID(const QUuid& walletUUID) { _walletUUID = walletUUID; } + const QUuid& getWalletUUID() const { return _walletUUID; } + void setSendingSockAddr(const HifiSockAddr& sendingSockAddr) { _sendingSockAddr = sendingSockAddr; } const HifiSockAddr& getSendingSockAddr() { return _sendingSockAddr; } @@ -42,6 +45,7 @@ private: QHash _sessionSecretHash; QUuid _assignmentUUID; + QUuid _walletUUID; QJsonObject _statsJSONObject; HifiSockAddr _sendingSockAddr; bool _isAuthenticated;