86 lines
2.1 KiB
C++
86 lines
2.1 KiB
C++
// ServerTest.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
|
|
//
|
|
|
|
#include <iostream>
|
|
#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<FileUploadDemo>(), uns::H_POST);
|
|
core.AppenedProcessor(uns::url_all, std::make_shared<DemoProcessor>(), uns::H_ALL_ENABLED);
|
|
|
|
core.ThreadRun();
|
|
|
|
while (getchar() != '0')
|
|
std::this_thread::sleep_for(0.1s);
|
|
|
|
core.Stop();
|
|
}
|
|
|
|
SCLOG_CLOSE();
|
|
|
|
return 0;
|
|
}
|
|
|