From d50f205787454790ba10be4edde35a20c84d841e Mon Sep 17 00:00:00 2001 From: Anonymous275 Date: Tue, 14 Apr 2020 01:01:06 +0300 Subject: [PATCH] Working Mod Sync --- src/Network/TCPClientHandler.cpp | 13 ++++++++----- src/Resources.cpp | 10 +++++++++- src/Settings.hpp | 1 + 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/Network/TCPClientHandler.cpp b/src/Network/TCPClientHandler.cpp index 47ccbd7..677c34a 100644 --- a/src/Network/TCPClientHandler.cpp +++ b/src/Network/TCPClientHandler.cpp @@ -16,7 +16,8 @@ int ParseAndSend(SOCKET Client, std::string Data){ bool FileSent = true; switch (ID){ case 'a' : - Response = FileList; + Response = FileList+FileSizes; + if(Response.empty())Response = " "; break; case 'b' : FileSent = false; @@ -35,9 +36,10 @@ int ParseAndSend(SOCKET Client, std::string Data){ f.seekg(0, std::ios_base::beg); f.read(&Response[0], Size); f.close(); - }else{f.close();} + }else f.close(); if(DataSent != Size){ + Packet.clear(); if((Size-DataSent) < 65535){ Packet = Response.substr(Prev,(Size-DataSent)); DataSent += (Size-DataSent); @@ -48,14 +50,15 @@ int ParseAndSend(SOCKET Client, std::string Data){ } Prev = DataSent; }else{ - Size = DataSent = Prev = 0; - Response = "End of file"; + Size = 0; + DataSent = 0; + Prev = 0; FileSent = true; Packet.clear(); } }else{ FileSent = true; - Response = "Cannot Open File " + FLocation; + Response = "Cannot Open"; } } diff --git a/src/Resources.cpp b/src/Resources.cpp index 8b729a9..fa85de7 100644 --- a/src/Resources.cpp +++ b/src/Resources.cpp @@ -2,6 +2,7 @@ /// Created by Anonymous275 on 4/11/2020 /// +#include #include #include #include @@ -9,6 +10,7 @@ namespace fs = std::experimental::filesystem; std::string FileList; +std::string FileSizes; void HandleResources(const std::string& path){ struct stat info{}; @@ -16,7 +18,13 @@ void HandleResources(const std::string& path){ _wmkdir(L"Resources"); } for (const auto & entry : fs::directory_iterator(path)){ - FileList += entry.path().string() + ";"; + int pos = entry.path().string().find(".zip"); + if(pos != std::string::npos){ + if(entry.path().string().length() - pos == 4){ + FileList += entry.path().string() + ";"; + FileSizes += std::to_string(fs::file_size(entry.path()))+";"; + } + } } std::replace(FileList.begin(),FileList.end(),'\\','/'); } \ No newline at end of file diff --git a/src/Settings.hpp b/src/Settings.hpp index 6fa8849..ad2b0a0 100644 --- a/src/Settings.hpp +++ b/src/Settings.hpp @@ -12,3 +12,4 @@ extern std::string Resource; extern std::string ServerVersion; extern std::string ClientVersion; extern std::string FileList; +extern std::string FileSizes;