diff options
Diffstat (limited to 'source/game')
-rw-r--r-- | source/game/StarServerClientContext.cpp | 6 | ||||
-rw-r--r-- | source/game/StarServerClientContext.hpp | 3 | ||||
-rw-r--r-- | source/game/StarUniverseServer.cpp | 9 | ||||
-rw-r--r-- | source/game/StarUniverseServer.hpp | 1 |
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; |