7 #include <SimoxUtility/algorithm/string/string_tools.h>
18 std::map<std::string, armem::client::Writer>* memoryWriters)
20 this->memoryWriters = memoryWriters;
28 std::filesystem::path path(directory);
30 std::map<std::filesystem::path, wm::Memory> memoryData;
32 if (not std::filesystem::is_directory(path))
34 ARMARX_WARNING <<
"You are trying to load data from a path which does not exist";
42 bool isSingleMemory =
false;
43 for (
auto i = std::filesystem::recursive_directory_iterator(path);
44 i != std::filesystem::recursive_directory_iterator();
52 <<
"You are trying to import a directory which does not contain memory data";
59 if (std::filesystem::is_regular_file(dir.path()) &&
70 auto loadMemory = [&](
const std::filesystem::path& p)
72 if (std::filesystem::is_directory(p))
74 std::string defaultIdent =
"DefaultDisk";
75 std::string exportFolderName = p.parent_path().filename();
76 ARMARX_INFO <<
"Name of the folder trying to import: " << exportFolderName;
77 std::string exportName = exportFolderName;
78 std::shared_ptr<armem::server::ltm::persistence::DiskPersistence> diskPersistence =
79 std::make_shared<armem::server::ltm::persistence::DiskPersistence>(
80 defaultIdent, exportName, p.parent_path().parent_path());
89 std::shared_ptr<armem::server::ltm::persistence::RedundantPersistenceStrategy>
99 memoryData[p] = std::move(
memory);
112 for (
const auto& dir : std::filesystem::directory_iterator(path))
114 loadMemory(dir.path());
118 for (
auto& [path,
memory] : memoryData)
120 std::string name =
memory.id().memoryName;
122 if (memoryWriters && memoryWriters->count(name) > 0)
127 memoryWriters->at(name).commit(commit);
132 <<
"' available for commit. Create new virtual memory.";
137 std::string virtualMemoryName = name;
138 memory.id().memoryName = virtualMemoryName;
139 memoryData[virtualMemoryName] = std::move(
memory);