From 881d03b11dd6060c0919d6006683ccbe256071bc Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 6 Nov 2014 13:54:40 -0800 Subject: [PATCH] migrate EntityServer and OctreeServer to tbb concurrent map --- assignment-client/src/entities/EntityServer.cpp | 9 +++------ assignment-client/src/octree/OctreeServer.cpp | 9 ++++----- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/assignment-client/src/entities/EntityServer.cpp b/assignment-client/src/entities/EntityServer.cpp index 31999f91f7..a39e7acbf4 100644 --- a/assignment-client/src/entities/EntityServer.cpp +++ b/assignment-client/src/entities/EntityServer.cpp @@ -124,11 +124,7 @@ void EntityServer::pruneDeletedEntities() { quint64 earliestLastDeletedEntitiesSent = usecTimestampNow() + 1; // in the future - NodeHashSnapshot snapshotHash = NodeList::getInstance()->getNodeHash().snapshot_table(); - - for (auto it = snapshotHash.begin(); it != snapshotHash.end(); it++) { - SharedNodePointer node = it->second; - + NodeList::getInstance()->eachNode([&earliestLastDeletedEntitiesSent](const SharedNodePointer& node) { if (node->getLinkedData()) { EntityNodeData* nodeData = static_cast(node->getLinkedData()); quint64 nodeLastDeletedEntitiesSentAt = nodeData->getLastDeletedEntitiesSentAt(); @@ -136,7 +132,8 @@ void EntityServer::pruneDeletedEntities() { earliestLastDeletedEntitiesSent = nodeLastDeletedEntitiesSentAt; } } - } + }); + tree->forgetEntitiesDeletedBefore(earliestLastDeletedEntitiesSent); } } diff --git a/assignment-client/src/octree/OctreeServer.cpp b/assignment-client/src/octree/OctreeServer.cpp index 2b38ce3cdd..e6211a046a 100644 --- a/assignment-client/src/octree/OctreeServer.cpp +++ b/assignment-client/src/octree/OctreeServer.cpp @@ -1138,12 +1138,11 @@ void OctreeServer::aboutToFinish() { qDebug() << qPrintable(_safeServerName) << "inform Octree Inbound Packet Processor that we are shutting down..."; _octreeInboundPacketProcessor->shuttingDown(); - NodeHashSnapshot snapshotHash = NodeList::getInstance()->getNodeHash().snapshot_table(); + NodeList::getInstance()->eachNode([this](const SharedNodePointer& node) { + qDebug() << qPrintable(_safeServerName) << "server about to finish while node still connected node:" << *node; + forceNodeShutdown(node); + }); - for (auto it = snapshotHash.begin(); it != snapshotHash.end(); it++) { - qDebug() << qPrintable(_safeServerName) << "server about to finish while node still connected node:" << *it->second; - forceNodeShutdown(it->second); - } qDebug() << qPrintable(_safeServerName) << "server ENDING about to finish..."; }