// ServerTest.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include #include "ServerCore.h" #include "ServerLogger.h" #include "ServerProcessor.h" #include "TempFileManager.h" #include "SyncFileReceiver.h" #include "UNSResponseBuilder.h" #pragma comment(lib, "UNSWebServerCore.lib") class DemoProcessor : public ServerProcessor { public: uns::ResponsePtr Processor(uns::RequestPtr request) override { return uns::ResponseBuilder().OK().Body(request->GetDataS())(); } }; class FileUploadDemo : public SyncFileReceiver { public: FileUploadDemo() { SyncFileReceiver::SetTempRoot("F:\\UNSWebServerCore\\cache"); SyncFileReceiver::SetFileTimeout(30s, 60s); } public: uns::Status PreCheckRequest(uns::RequestPtr request) override { SCLOGF_INFO("Upload Request, Size: {}", request->GetContentLength()); return uns::kOK; } bool PreCheckForm(uns::FormPartPtr form) override { SCLOGF_INFO("Form Size: {}", form->GetDataSize()); return true; } uns::ResponsePtr ProcessFiles(TempFileManager& file_info, SFR_FileMap file_map, const std::string& tmp_root, uns::RequestPtr request) override { SCLOGF_INFO("Current File Count: {}", file_map.size()); for (const auto& [on, sn] : file_map) { SCLOGF_INFO("Current File: {} --> {}", on, sn); file_info.ActiveFile(sn); //Active File } SCLOGF_INFO("Global File Count: {}", file_info.GetFileCount()); for (const auto& info : file_info.GetAllFileInfos()) { SCLOGF_INFO("Global File [{}], Storaged AS [{}], Size: {}, Upload AT: {}", info.GetOriginalFileName(), info.GetStorageFileName(), info.GetFileSize(), info.GetUploadTime().Format("%Y-%m-%d %H:%M:%S")); } return uns::ResponseBuilder().OK()(); } }; int main() { SCLOG_CONSOLE_INIT(uns::llAll); { ServerCore core(12345); core.AppenedFileReceiver("/upload", std::make_shared(), uns::H_POST); core.AppenedProcessor(uns::url_all, std::make_shared(), uns::H_ALL_ENABLED); core.ThreadRun(); while (getchar() != '0') std::this_thread::sleep_for(0.1s); core.Stop(); } SCLOG_CLOSE(); return 0; }