Skip to content
Snippets Groups Projects
Commit 83c2a3ec authored by Rainer Kartmann's avatar Rainer Kartmann
Browse files

Add ltm/disk/operations.h

parent 227f9d22
No related branches found
No related tags found
1 merge request!135Resolve "Add Grasp (Affordance) Memory"
......@@ -84,6 +84,7 @@ set(LIB_FILES
server/RemoteGuiAronDataVisitor.cpp
server/ltm/LongtermMemoryBase.cpp
server/ltm/disk/operations.cpp
server/ltm/disk/MemoryManager.cpp
server/ltm/mongodb/MemoryManager.cpp
server/ltm/mongodb/ConnectionManager.cpp
......@@ -196,6 +197,7 @@ set(LIB_HEADERS
server/RemoteGuiAronDataVisitor.h
server/ltm/LongtermMemoryBase.h
server/ltm/disk/operations.h
server/ltm/disk/MemoryManager.h
server/ltm/mongodb/MemoryManager.h
server/ltm/mongodb/ConnectionManager.h
......
#include "operations.h"
#include <RobotAPI/libraries/armem/client/query/Builder.h>
#include <RobotAPI/libraries/armem/server/ltm/disk/MemoryManager.h>
#include <RobotAPI/libraries/armem/server/query_proc/ltm.h>
#include <RobotAPI/libraries/armem/server/wm/memory_definitions.h>
namespace armarx::armem::server::ltm
{
armem::wm::Memory
disk::load(const std::filesystem::path& directory)
{
const std::string key = directory.filename();
armem::server::ltm::disk::MemoryManager manager;
manager.setName(key);
manager.setBasePath(directory);
manager.reload();
armem::client::QueryBuilder builder;
builder.all();
armem::client::QueryInput queryInput = builder.buildQueryInput();
queryInput.addQueryTargetToAll(armem::query::data::QueryTarget::LTM);
armem::server::query_proc::ltm::MemoryQueryProcessor processor;
armem::wm::Memory memory =
processor.process(queryInput.toIce(), manager.getCacheAndLutNotConverted());
manager.convert(memory);
return memory;
}
namespace detail
{
template <class MemoryT>
void
store(const std::filesystem::path& directory, const MemoryT& memory)
{
const std::string& name = memory.name();
if (std::filesystem::is_regular_file(directory / name))
{
std::stringstream ss;
ss << "Could not export memory '" << name << "' to " << directory << ": "
<< "Cannot overwrite existing file.\n";
throw error::IOError(directory, ss.str());
}
else
{
std::filesystem::create_directories(directory / name);
armem::server::ltm::disk::MemoryManager manager;
manager.setName(name);
manager.setBasePath(directory / name);
manager.reload();
manager.append(memory);
}
}
} // namespace detail
void
disk::store(const std::filesystem::path& directory, const armem::wm::Memory& memory)
{
detail::store(directory, memory);
}
void
disk::store(const std::filesystem::path& directory, const armem::server::wm::Memory& memory)
{
detail::store(directory, memory);
}
} // namespace armarx::armem::server::ltm
#pragma once
#include <filesystem>
#include <RobotAPI/libraries/armem/core/forward_declarations.h>
#include <RobotAPI/libraries/armem/server/forward_declarations.h>
namespace armarx::armem::server::ltm::disk
{
armem::wm::Memory load(const std::filesystem::path& directory);
void store(const std::filesystem::path& directory, const armem::wm::Memory& memory);
void store(const std::filesystem::path& directory, const armem::server::wm::Memory& memory);
} // namespace armarx::armem::server::ltm::disk
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment