47 lines
1.9 KiB
C++
47 lines
1.9 KiB
C++
#pragma once
|
|
#include <map>
|
|
#include <string>
|
|
#include <chrono>
|
|
#include <memory>
|
|
#include "Export.h"
|
|
#include "WebFileInfo.h"
|
|
|
|
using std::chrono::operator""s;
|
|
using std::chrono::operator""min;
|
|
|
|
class UNSWSC_DLL_EXPORT TempFileManager
|
|
{
|
|
private:
|
|
class Impl;
|
|
|
|
std::unique_ptr<Impl> pimpl;
|
|
|
|
public:
|
|
TempFileManager() noexcept;
|
|
~TempFileManager() noexcept;
|
|
|
|
// 禁止拷贝与移动
|
|
TempFileManager(const TempFileManager&) = delete;
|
|
TempFileManager& operator=(const TempFileManager&) = delete;
|
|
TempFileManager(TempFileManager&&) = delete;
|
|
TempFileManager& operator=(TempFileManager&&) = delete;
|
|
|
|
// 基础业务接口(保持不变)
|
|
bool SetBaseDirectory(std::string dir) noexcept;
|
|
bool RegisterFile(const WebFileInfo& info, std::chrono::seconds timeout, std::chrono::seconds max_proc_timeout = std::chrono::seconds(0)) noexcept;
|
|
bool InvalidateFile(const WebFileInfo& info);
|
|
//For SFR_FileMap<OriginFileName, StorageFileName>
|
|
bool InvalidateFile(const std::map<std::string, std::string>& info);
|
|
bool CopyFileTo(const std::string& storage_name, const std::string& dest_absolute_path) noexcept;
|
|
bool CutFileTo(const std::string& storage_name, const std::string& dest_absolute_path) noexcept;
|
|
bool RenameFile(const std::string& old_storage_name, const std::string& new_storage_name) noexcept;
|
|
bool DeleteFile(const std::string& storage_name) noexcept;
|
|
bool ActiveFile(const std::string& storage_name) noexcept;
|
|
bool DeactiveFile(const std::string& storage_name) noexcept;
|
|
bool SetPermanent(const std::string& storage_name, bool permanent) noexcept;
|
|
bool FileExists(const std::string& storage_name) const noexcept;
|
|
bool GetFileInfo(const std::string& storage_name, WebFileInfo& out_info) const noexcept;
|
|
size_t GetFileCount() const noexcept;
|
|
// 获取当前所有管理中的文件信息快照(线程安全,绝不抛出异常)
|
|
std::vector<WebFileInfo> GetAllFileInfos() const noexcept;
|
|
}; |