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

summaryrefslogtreecommitdiff
path: root/source/game
diff options
context:
space:
mode:
Diffstat (limited to 'source/game')
-rw-r--r--source/game/StarServerClientContext.cpp6
-rw-r--r--source/game/StarServerClientContext.hpp3
-rw-r--r--source/game/StarUniverseServer.cpp9
-rw-r--r--source/game/StarUniverseServer.hpp1
4 files changed, 19 insertions, 0 deletions
diff --git a/source/game/StarServerClientContext.cpp b/source/game/StarServerClientContext.cpp
index fcbffbd..cd7c6cd 100644
--- a/source/game/StarServerClientContext.cpp
+++ b/source/game/StarServerClientContext.cpp
@@ -63,6 +63,8 @@ ServerClientContext::ServerClientContext(ConnectionId clientId, Maybe<HostAddres
m_netGroup.addNetElement(&m_teamNetState);
m_netGroup.addNetElement(&m_shipUpgrades);
m_netGroup.addNetElement(&m_shipCoordinate);
+
+ m_creationTime = Time::monotonicMilliseconds();
}
ConnectionId ServerClientContext::clientId() const {
@@ -289,4 +291,8 @@ Json ServerClientContext::storeServerData() {
return store;
}
+int64_t ServerClientContext::creationTime() const {
+ return m_creationTime;
+}
+
}
diff --git a/source/game/StarServerClientContext.hpp b/source/game/StarServerClientContext.hpp
index 7c54765..b81b706 100644
--- a/source/game/StarServerClientContext.hpp
+++ b/source/game/StarServerClientContext.hpp
@@ -85,6 +85,8 @@ public:
void loadServerData(Json const& store);
Json storeServerData();
+ int64_t creationTime() const;
+
private:
ConnectionId const m_clientId;
Maybe<HostAddress> const m_remoteAddress;
@@ -109,6 +111,7 @@ private:
NetElementTopGroup m_netGroup;
uint64_t m_netVersion = 0;
+ int64_t m_creationTime;
NetElementData<Maybe<pair<WarpAction, WarpMode>>> m_orbitWarpActionNetState;
NetElementData<WorldId> m_playerWorldIdNetState;
diff --git a/source/game/StarUniverseServer.cpp b/source/game/StarUniverseServer.cpp
index 9ce097e..fde8ca6 100644
--- a/source/game/StarUniverseServer.cpp
+++ b/source/game/StarUniverseServer.cpp
@@ -173,6 +173,15 @@ List<ConnectionId> UniverseServer::clientIds() const {
return m_clients.keys();
}
+List<pair<ConnectionId, int64_t>> UniverseServer::clientIdsAndCreationTime() const {
+ List<pair<ConnectionId, int64_t>> result;
+ ReadLocker clientsLocker(m_clientsLock);
+ result.reserve(m_clients.size());
+ for (auto& pair : m_clients)
+ result.emplaceAppend(pair.first, pair.second->creationTime());
+ return result;
+}
+
size_t UniverseServer::numberOfClients() const {
ReadLocker clientsLocker(m_clientsLock);
return m_clients.size();
diff --git a/source/game/StarUniverseServer.hpp b/source/game/StarUniverseServer.hpp
index e7f24fa..a87194f 100644
--- a/source/game/StarUniverseServer.hpp
+++ b/source/game/StarUniverseServer.hpp
@@ -55,6 +55,7 @@ public:
bool isWorldActive(WorldId const& worldId) const;
List<ConnectionId> clientIds() const;
+ List<pair<ConnectionId, int64_t>> clientIdsAndCreationTime() const;
size_t numberOfClients() const;
uint32_t maxClients() const;
bool isConnectedClient(ConnectionId clientId) const;