| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #pragma once
- #include <deque>
- #include "FileDefinition.h"
- #include "exports.h"
- namespace craftlab::fakeraid
- {
- class IEngine
- {
- public:
- virtual ~IEngine() {};
- virtual void DirExistsOrThrow() const =0;
- virtual std::vector<std::string> GetRootPaths() const = 0;
- virtual std::vector<std::string> GetPaths() const = 0;
- virtual std::deque<std::string> GetCurrentDir() const =0;
- virtual bool SetWorkingDirectory(const std::vector<std::string>& path) =0;
- virtual FileAndSumListByRepositoryIndex ListFiles() =0;
- virtual void ListFilesRecur(FileAndSumListByRepositoryIndex*, bool* threadStopping) =0;
- virtual size_t CountFilesRecur() =0;
- virtual void Cd(const std::string& dirName) =0;
- virtual std::string BuildCurrentDirPath(const std::string& root, const PathParts& pathParts) const = 0;
- virtual std::string BuildCurrentDirPath(const File& file) const = 0;
- virtual std::string BuildFullPath(const File& file) const =0;
- struct CopyInstruction
- {
- CopyInstruction() =default;
- CopyInstruction(const std::string& src, const std::string& dst): source(src), destination(dst) {}
- std::string source;
- std::string destination;
- };
- virtual bool AnyFileExists(const std::vector<std::string>& files, const std::string& dropTo) const =0;
- virtual void RemoveFiles(const std::vector<std::string>& paths) const = 0;
- virtual void RemoveDirs(const std::vector<std::string>& paths) const = 0;
- virtual void CopyItems(const std::vector<CopyInstruction>& itemsToCopy) const =0;
- virtual void AddFiles(const std::vector<std::string>& files, const std::string& destination) const =0;
- class SameFileError: public std::exception
- {};
- };
- class ENGINEAPI_EXPORT EngineManager
- {
- public:
- EngineManager() =delete;
- static IEngine* Open(const std::vector<std::string>& paths);
- };
- }
|