From 8fb85110ac407d46720a2e72afd9c7169e2e5d78 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 20 May 2014 15:58:57 -0700 Subject: [PATCH] add a timer to initiate payment to assigned nodes --- domain-server/src/DomainServer.cpp | 23 ++++++++++++++++++++++- domain-server/src/DomainServer.h | 2 +- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index 56d645ed24..df946b8dcb 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -57,6 +57,13 @@ DomainServer::DomainServer(int argc, char* argv[]) : setupNodeListAndAssignments(); _networkAccessManager = new QNetworkAccessManager(this); + + // setup a timer to send transactions to pay assigned nodes every 30 seconds + QTimer* nodePaymentTimer = new QTimer(this); + connect(nodePaymentTimer, &QTimer::timeout, this, &DomainServer::payAssignedNodes); + + const qint64 NODE_PAYMENT_INTERVAL_MSECS = 30 * 1000; + nodePaymentTimer->start(NODE_PAYMENT_INTERVAL_MSECS); } } @@ -343,10 +350,12 @@ void DomainServer::handleConnectRequest(const QByteArray& packet, const HifiSock bool isAssignment = _pendingAssignedNodes.contains(packetUUID); SharedAssignmentPointer matchingQueuedAssignment = SharedAssignmentPointer(); PendingAssignedNodeData* pendingAssigneeData = NULL; + if (isAssignment) { pendingAssigneeData = _pendingAssignedNodes.take(packetUUID); + if (pendingAssigneeData) { - matchingQueuedAssignment = matchingQueuedAssignmentForCheckIn(packetUUID, nodeType); + matchingQueuedAssignment = matchingQueuedAssignmentForCheckIn(pendingAssigneeData->getAssignmentUUID(), nodeType); if (matchingQueuedAssignment) { qDebug() << "Assignment deployed with" << uuidStringWithoutCurlyBraces(packetUUID) @@ -647,6 +656,18 @@ void DomainServer::readAvailableDatagrams() { } } +void DomainServer::payAssignedNodes() { + // enumerate the NodeList to find the assigned nodes + foreach (const SharedNodePointer& node, LimitedNodeList::getInstance()->getNodeHash()) { + DomainServerNodeData* nodeData = reinterpret_cast(node->getLinkedData()); + + if (!nodeData->getAssignmentUUID().isNull() && !nodeData->getWalletUUID().isNull()) { + // add a pending transaction for this node or increase the amount for the existing transaction + + } + } +} + void DomainServer::processDatagram(const QByteArray& receivedPacket, const HifiSockAddr& senderSockAddr) { LimitedNodeList* nodeList = LimitedNodeList::getInstance(); diff --git a/domain-server/src/DomainServer.h b/domain-server/src/DomainServer.h index 63a3afa13d..281a10d88b 100644 --- a/domain-server/src/DomainServer.h +++ b/domain-server/src/DomainServer.h @@ -45,8 +45,8 @@ public slots: void nodeKilled(SharedNodePointer node); private slots: - void readAvailableDatagrams(); + void payAssignedNodes(); private: void setupNodeListAndAssignments(const QUuid& sessionUUID = QUuid::createUuid()); bool optionallySetupOAuth();