Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/game/StarUniverseServer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/game/StarUniverseServer.cpp')
-rw-r--r--source/game/StarUniverseServer.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/source/game/StarUniverseServer.cpp b/source/game/StarUniverseServer.cpp
index 51f4cec..dd48085 100644
--- a/source/game/StarUniverseServer.cpp
+++ b/source/game/StarUniverseServer.cpp
@@ -151,6 +151,11 @@ List<WorldId> UniverseServer::activeWorlds() const {
return m_worlds.keys();
}
+bool UniverseServer::isWorldActive(WorldId const& worldId) const {
+ RecursiveMutexLocker locker(m_mainLock);
+ return m_worlds.contains(worldId);
+}
+
List<ConnectionId> UniverseServer::clientIds() const {
ReadLocker clientsLocker(m_clientsLock);
return m_clients.keys();
@@ -1045,8 +1050,14 @@ void UniverseServer::handleWorldMessages() {
auto it = m_pendingWorldMessages.begin();
while (it != m_pendingWorldMessages.end()) {
auto& worldId = it->first;
- if (auto worldPtr = triggerWorldCreation(worldId).value()) {
- worldPtr->passMessages(move(it->second));
+ if (auto worldResult = triggerWorldCreation(worldId)) {
+ auto& world = *worldResult;
+
+ if (world)
+ world->passMessages(move(it->second));
+ else for (auto& message : it->second)
+ message.promise.fail("Error creating world");
+
it = m_pendingWorldMessages.erase(it);
}
else