diff --git a/include/THeartbeatThread.h b/include/THeartbeatThread.h index 9b1b7d8..1442e08 100644 --- a/include/THeartbeatThread.h +++ b/include/THeartbeatThread.h @@ -8,7 +8,7 @@ class THeartbeatThread : public IThreaded { public: THeartbeatThread(TResourceManager& ResourceManager, TServer& Server); - ~THeartbeatThread(); + //~THeartbeatThread(); void operator()() override; private: diff --git a/include/TResourceManager.h b/include/TResourceManager.h index 4035784..af6d4cb 100644 --- a/include/TResourceManager.h +++ b/include/TResourceManager.h @@ -8,6 +8,7 @@ public: [[nodiscard]] uint64_t MaxModSize() const { return mMaxModSize; } [[nodiscard]] std::string FileList() const { return mFileList; } + [[nodiscard]] std::string TrimmedList() const { return mTrimmedList; } [[nodiscard]] std::string FileSizes() const { return mFileSizes; } [[nodiscard]] int ModsLoaded() const { return mModsLoaded; } @@ -15,5 +16,6 @@ private: uint64_t mMaxModSize = 0; std::string mFileSizes; std::string mFileList; + std::string mTrimmedList; int mModsLoaded = 0; }; \ No newline at end of file diff --git a/include/TTCPServer.h b/include/TTCPServer.h index d0edc8d..3fd1a09 100644 --- a/include/TTCPServer.h +++ b/include/TTCPServer.h @@ -12,7 +12,7 @@ class TResourceManager; class TTCPServer : public IThreaded { public: explicit TTCPServer(TServer& Server, TPPSMonitor& PPSMonitor, TResourceManager& ResourceManager); - ~TTCPServer(); + //~TTCPServer(); void operator()() override; @@ -27,7 +27,7 @@ public: TUDPServer& UDPServer() { return mUDPServer->get(); } - void SyncClient(std::weak_ptr c); + void SyncClient(const std::weak_ptr& c); void Identify(SOCKET TCPSock); void Authentication(SOCKET TCPSock); bool CheckBytes(TClient& c, int32_t BytesRcv); @@ -43,10 +43,10 @@ private: bool mShutdown { false }; void HandleDownload(SOCKET TCPSock); - void OnConnect(std::weak_ptr c); - void TCPClient(std::weak_ptr c); + void OnConnect(const std::weak_ptr& c); + void TCPClient(const std::weak_ptr& c); int OpenID(); - void OnDisconnect(std::weak_ptr ClientPtr, bool kicked); + void OnDisconnect(const std::weak_ptr& ClientPtr, bool kicked); void Parse(TClient& c, const std::string& Packet); void SendFile(TClient& c, const std::string& Name); static bool TCPSendRaw(SOCKET C, char* Data, int32_t Size); diff --git a/src/THeartbeatThread.cpp b/src/THeartbeatThread.cpp index 1040a72..3bb70ec 100644 --- a/src/THeartbeatThread.cpp +++ b/src/THeartbeatThread.cpp @@ -69,7 +69,7 @@ std::string THeartbeatThread::GenerateCall() { << "&clientversion=" << Application::ClientVersion() << "&name=" << Application::Settings.ServerName << "&pps=" << Application::PPS() - << "&modlist=" << mResourceManager.FileList() + << "&modlist=" << mResourceManager.TrimmedList() << "&modstotalsize=" << mResourceManager.MaxModSize() << "&modstotal=" << mResourceManager.ModsLoaded() << "&playerslist=" << GetPlayers() @@ -91,7 +91,7 @@ THeartbeatThread::THeartbeatThread(TResourceManager& ResourceManager, TServer& S } std::string THeartbeatThread::GetPlayers() { std::string Return; - mServer.ForEachClient([&](std::weak_ptr ClientPtr) -> bool { + mServer.ForEachClient([&](const std::weak_ptr& ClientPtr) -> bool { if (!ClientPtr.expired()) { Return += ClientPtr.lock()->GetName() + ";"; } @@ -99,5 +99,5 @@ std::string THeartbeatThread::GetPlayers() { }); return Return; } -THeartbeatThread::~THeartbeatThread() { -} +/*THeartbeatThread::~THeartbeatThread() { +}*/ diff --git a/src/TResourceManager.cpp b/src/TResourceManager.cpp index de32802..c79aa0e 100644 --- a/src/TResourceManager.cpp +++ b/src/TResourceManager.cpp @@ -10,17 +10,23 @@ TResourceManager::TResourceManager() { if (!fs::exists(Path)) fs::create_directories(Path); for (const auto& entry : fs::directory_iterator(Path)) { - auto pos = entry.path().string().find(".zip"); - if (pos != std::string::npos) { - if (entry.path().string().length() - pos == 4) { - mFileList += entry.path().string() + ";"; - mFileSizes += std::to_string(uint64_t(fs::file_size(entry.path()))) + ";"; + std::string File(entry.path().string()); + if (auto pos = File.find(".zip"); pos != std::string::npos) { + if (File.length() - pos == 4) { + std::replace(File.begin(), File.end(),'\\','/'); + mFileList += File + ';'; + if(auto i = File.find_last_of('/'); i != std::string::npos){ + ++i; + File = File.substr(i,pos-i); + } + mTrimmedList += File + ';'; + mFileSizes += std::to_string(uint64_t(fs::file_size(entry.path()))) + ';'; mMaxModSize += uint64_t(fs::file_size(entry.path())); mModsLoaded++; } } } - std::replace(mFileList.begin(), mFileList.end(), '\\', '/'); + if (mModsLoaded) info("Loaded " + std::to_string(mModsLoaded) + " Mods"); } diff --git a/src/TTCPServer.cpp b/src/TTCPServer.cpp index f82b130..de1ce4e 100644 --- a/src/TTCPServer.cpp +++ b/src/TTCPServer.cpp @@ -51,7 +51,7 @@ void TTCPServer::HandleDownload(SOCKET TCPSock) { return; } auto ID = uint8_t(D); - mServer.ForEachClient([&](std::weak_ptr ClientPtr) -> bool { + mServer.ForEachClient([&](const std::weak_ptr& ClientPtr) -> bool { if (!ClientPtr.expired()) { auto c = ClientPtr.lock(); if (c->GetID() == ID) { @@ -264,7 +264,7 @@ void TTCPServer::ClientKick(TClient& c, const std::string& R) { CloseSocketProper(c.GetTCPSock()); } -void TTCPServer::TCPClient(std::weak_ptr c) { +void TTCPServer::TCPClient(const std::weak_ptr& c) { // TODO: the c.expired() might cause issues here, remove if you end up here with your debugger if (c.expired() || c.lock()->GetTCPSock() == -1) { mServer.RemoveClient(c); @@ -290,7 +290,7 @@ void TTCPServer::TCPClient(std::weak_ptr c) { void TTCPServer::UpdatePlayer(TClient& Client) { std::string Packet = ("Ss") + std::to_string(mServer.ClientCount()) + "/" + std::to_string(Application::Settings.MaxPlayers) + ":"; - mServer.ForEachClient([&](std::weak_ptr ClientPtr) -> bool { + mServer.ForEachClient([&](const std::weak_ptr& ClientPtr) -> bool { if (!ClientPtr.expired()) { auto c = ClientPtr.lock(); Packet += c->GetName() + ","; @@ -301,7 +301,7 @@ void TTCPServer::UpdatePlayer(TClient& Client) { Respond(Client, Packet, true); } -void TTCPServer::OnDisconnect(std::weak_ptr ClientPtr, bool kicked) { +void TTCPServer::OnDisconnect(const std::weak_ptr& ClientPtr, bool kicked) { Assert(!ClientPtr.expired()); auto LockedClientPtr = ClientPtr.lock(); TClient& c = *LockedClientPtr; @@ -332,7 +332,7 @@ int TTCPServer::OpenID() { bool found; do { found = true; - mServer.ForEachClient([&](std::weak_ptr ClientPtr) -> bool { + mServer.ForEachClient([&](const std::weak_ptr& ClientPtr) -> bool { if (!ClientPtr.expired()) { auto c = ClientPtr.lock(); if (c->GetID() == ID) { @@ -346,7 +346,7 @@ int TTCPServer::OpenID() { return ID; } -void TTCPServer::OnConnect(std::weak_ptr c) { +void TTCPServer::OnConnect(const std::weak_ptr& c) { Assert(!c.expired()); info("Client connected"); auto LockedClient = c.lock(); @@ -522,7 +522,7 @@ void TTCPServer::Respond(TClient& c, const std::string& MSG, bool Rel) { } } -void TTCPServer::SyncClient(std::weak_ptr c) { +void TTCPServer::SyncClient(const std::weak_ptr& c) { if (c.expired()) { return; } @@ -535,7 +535,7 @@ void TTCPServer::SyncClient(std::weak_ptr c) { UDPServer().SendToAll(LockedClient.get(), ("JWelcome ") + LockedClient->GetName() + "!", false, true); TriggerLuaEvent(("onPlayerJoin"), false, nullptr, std::make_unique(TLuaArg { { LockedClient->GetID() } }), false); bool Return = false; - mServer.ForEachClient([&](std::weak_ptr ClientPtr) -> bool { + mServer.ForEachClient([&](const std::weak_ptr& ClientPtr) -> bool { if (!ClientPtr.expired()) { auto client = ClientPtr.lock(); if (client != LockedClient) { @@ -658,5 +658,5 @@ void TTCPServer::operator()() { CloseSocketProper(client); #endif } -TTCPServer::~TTCPServer() { -} +/*TTCPServer::~TTCPServer() { +}*/