| 123456789101112131415161718192021222324252627282930313233343536373839 |
- #pragma once
- #include <optional>
- #include "exports.h"
- #include "FileDefinition.h"
- namespace craftlab::fakeraid
- {
- class IEngine;
- struct DiffResult
- {
- std::map<std::string, std::vector<bool>> missingDirs;
- std::map<std::string, std::vector<bool>> missingFiles;
- std::map<std::string, std::vector<int>> differentFiles; // fileName -> { versionId, versionId, versionId }
- std::vector<File> correctFiles;
- std::map<std::string, FileAndSum> FileList;
- ENGINEAPI_EXPORT bool HasError() const;
- };
- class ENGINEAPI_EXPORT FileDiff
- {
- public:
- FileDiff();
- ~FileDiff();
- DiffResult Process(const IEngine& engine, const FileAndSumListByRepositoryIndex& fileList);
- private:
- typedef std::optional<FileAndSum> OptionalFileAndSum;
- typedef std::vector<OptionalFileAndSum> ListOfOptionalFileAndSum;
- typedef std::map<std::string, ListOfOptionalFileAndSum> FileVersionList;
- FileVersionList GroupBy(const IEngine& engine, const FileAndSumListByRepositoryIndex& fileList, size_t indexCount);
- std::vector<int> computeVersionIds(const ListOfOptionalFileAndSum& versions);
- void CheckVersions(DiffResult& output, const std::string& fileKey, const ListOfOptionalFileAndSum& versions);
- };
- }
|