IEngine.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #pragma once
  2. #include <deque>
  3. #include "FileDefinition.h"
  4. #include "exports.h"
  5. namespace craftlab::fakeraid
  6. {
  7. class IEngine
  8. {
  9. public:
  10. virtual ~IEngine() {};
  11. virtual void DirExistsOrThrow() const =0;
  12. virtual std::vector<std::string> GetRootPaths() const = 0;
  13. virtual std::vector<std::string> GetPaths() const = 0;
  14. virtual std::deque<std::string> GetCurrentDir() const =0;
  15. virtual bool SetWorkingDirectory(const std::vector<std::string>& path) =0;
  16. virtual FileAndSumListByRepositoryIndex ListFiles() =0;
  17. virtual void ListFilesRecur(FileAndSumListByRepositoryIndex*, bool* threadStopping) =0;
  18. virtual size_t CountFilesRecur() =0;
  19. virtual void Cd(const std::string& dirName) =0;
  20. virtual std::string BuildCurrentDirPath(const std::string& root, const PathParts& pathParts) const = 0;
  21. virtual std::string BuildCurrentDirPath(const File& file) const = 0;
  22. virtual std::string BuildFullPath(const File& file) const =0;
  23. struct CopyInstruction
  24. {
  25. CopyInstruction() =default;
  26. CopyInstruction(const std::string& src, const std::string& dst): source(src), destination(dst) {}
  27. std::string source;
  28. std::string destination;
  29. };
  30. virtual bool AnyFileExists(const std::vector<std::string>& files, const std::string& dropTo) const =0;
  31. virtual void RemoveFiles(const std::vector<std::string>& paths) const = 0;
  32. virtual void RemoveDirs(const std::vector<std::string>& paths) const = 0;
  33. virtual void CopyItems(const std::vector<CopyInstruction>& itemsToCopy) const =0;
  34. virtual void AddFiles(const std::vector<std::string>& files, const std::string& destination) const =0;
  35. class SameFileError: public std::exception
  36. {};
  37. };
  38. class ENGINEAPI_EXPORT EngineManager
  39. {
  40. public:
  41. EngineManager() =delete;
  42. static IEngine* Open(const std::vector<std::string>& paths);
  43. };
  44. }