aboutsummaryrefslogtreecommitdiff
path: root/zenstore/blockstore.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2022-05-09 14:00:53 +0200
committerGitHub <[email protected]>2022-05-09 14:00:53 +0200
commit007d72930c8a5813de8a202e06b8b18f296b94ed (patch)
treeeea01d61b83c94f2d344392eda0a9b1a06a805a8 /zenstore/blockstore.cpp
parentMerge pull request #90 from EpicGames/de/simplify-cache-bucket-put-standalone (diff)
parentremove use of Ref<> in ZenCacheStore (diff)
downloadzen-007d72930c8a5813de8a202e06b8b18f296b94ed.tar.xz
zen-007d72930c8a5813de8a202e06b8b18f296b94ed.zip
Merge pull request #89 from EpicGames/de/namespacesv1.0.1.5
Add namespacecachestore layer to allow multiple structured cache namespaces
Diffstat (limited to 'zenstore/blockstore.cpp')
-rw-r--r--zenstore/blockstore.cpp40
1 files changed, 10 insertions, 30 deletions
diff --git a/zenstore/blockstore.cpp b/zenstore/blockstore.cpp
index 1946169c4..d490678b5 100644
--- a/zenstore/blockstore.cpp
+++ b/zenstore/blockstore.cpp
@@ -162,7 +162,7 @@ BlockStore::Initialize(const std::filesystem::path& BlocksBasePath,
{
continue;
}
- std::string FileName = Path.stem().string();
+ std::string FileName = PathToUtf8(Path.stem());
uint32_t BlockIndex;
bool OK = ParseHexNumber(FileName, BlockIndex);
if (!OK)
@@ -1053,35 +1053,15 @@ namespace {
std::vector<std::filesystem::path> GetDirectoryContent(std::filesystem::path RootDir, bool Files, bool Directories)
{
- FileSystemTraversal Traversal;
- struct Visitor : public FileSystemTraversal::TreeVisitor
- {
- virtual void VisitFile(const std::filesystem::path& Parent, const path_view& File, uint64_t) override
- {
- if (Files)
- {
- Items.push_back(Parent / File);
- }
- }
-
- virtual bool VisitDirectory(const std::filesystem::path& Parent, const path_view& Dir) override
- {
- if (Directories)
- {
- Items.push_back(Parent / Dir);
- }
- return true;
- }
-
- bool Files;
- bool Directories;
- std::vector<std::filesystem::path> Items;
- } Visit;
- Visit.Files = Files;
- Visit.Directories = Directories;
-
- Traversal.TraverseFileSystem(RootDir, Visit);
- return Visit.Items;
+ DirectoryContent DirectoryContent;
+ GetDirectoryContent(RootDir,
+ DirectoryContent::RecursiveFlag | (Files ? DirectoryContent::IncludeFilesFlag : 0) |
+ (Directories ? DirectoryContent::IncludeDirsFlag : 0),
+ DirectoryContent);
+ std::vector<std::filesystem::path> Result;
+ Result.insert(Result.end(), DirectoryContent.Directories.begin(), DirectoryContent.Directories.end());
+ Result.insert(Result.end(), DirectoryContent.Files.begin(), DirectoryContent.Files.end());
+ return Result;
};
static IoBuffer CreateChunk(uint64_t Size)