| 1234567891011121314151617181920212223242526272829303132333435 |
- #pragma once
- #include <optional>
- #include "exports.h"
- #include "FileDefinition.h"
- namespace craftlab::fakeraid
- {
- 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;
- };
- class FileDiff
- {
- public:
- ENGINEAPI_EXPORT FileDiff();
- ENGINEAPI_EXPORT ~FileDiff();
- ENGINEAPI_EXPORT DiffResult Process(const FileAndSumListByRepositoryIndex& fileList);
- private:
- typedef std::optional<FileAndSum> OptionalFileAndSum;
- typedef std::vector<OptionalFileAndSum> ListOfOptionalFileAndSum;
- typedef std::map<std::string, ListOfOptionalFileAndSum> FileVersionList;
- FileVersionList GroupBy(const FileAndSumListByRepositoryIndex& fileList, size_t indexCount);
- std::vector<int> computeVersionIds(const ListOfOptionalFileAndSum& versions);
- void CheckVersions(DiffResult& output, const std::string& fileName, const ListOfOptionalFileAndSum& versions);
- };
- }
|