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

Add memory mutex

parent 13fe7f74
No related branches found
No related tags found
1 merge request!90Armem/memory
......@@ -27,7 +27,6 @@
#include <SimoxUtility/algorithm/string.h>
#include <RobotAPI/libraries/armem/error/ArMemError.h>
#include <RobotAPI/libraries/armem/component/IceMemory.h>
#include <RobotAPI/libraries/armem/component/MemoryRemoteGui.h>
......@@ -97,15 +96,15 @@ namespace armarx
armem::data::AddSegmentsResult ArMemExampleMemory::addSegments(const armem::data::AddSegmentsInput& input, const Ice::Current&)
{
armem::data::AddSegmentsResult result = iceMemory.addSegments(input, p.core.addOnUsage);
armem::data::AddSegmentsResult result = MemoryComponentPluginUser::addSegments(input, p.core.addOnUsage);
tab.rebuild = true;
return result;
}
armem::data::CommitResult ArMemExampleMemory::commit(const armem::data::Commit& commitIce, const Ice::Current&)
armem::data::CommitResult ArMemExampleMemory::commit(const armem::data::Commit& commit, const Ice::Current&)
{
armem::data::CommitResult result = iceMemory.commit(commitIce);
armem::data::CommitResult result = MemoryComponentPluginUser::commit(commit);
tab.rebuild = true;
return result;
}
......@@ -124,7 +123,10 @@ namespace armarx
using namespace armarx::RemoteGui::Client;
armem::MemoryRemoteGui mrg;
tab.memoryGroup = mrg.makeGroupBox(memory);
{
std::scoped_lock lock(memoryMutex);
tab.memoryGroup = mrg.makeGroupBox(memory);
}
VBoxLayout root = {tab.memoryGroup, VSpacer()};
RemoteGui_createTab(getName(), root, &tab);
......
......@@ -55,6 +55,7 @@ namespace armarx::armem
return output;
}
armem::data::AddSegmentsResult IceMemory::addSegments(const armem::data::AddSegmentsInput& input, bool addCoreSegments)
{
ARMARX_CHECK_NOT_NULL(memory);
......
......@@ -21,13 +21,20 @@ namespace armarx::armem
armem::data::AddSegmentsResult MemoryComponentPluginUser::addSegments(const armem::data::AddSegmentsInput& input, const Ice::Current&)
{
bool addCoreSegmentOnUsage = false;
armem::data::AddSegmentsResult result = iceMemory.addSegments(input, addCoreSegmentOnUsage);
return addSegments(input, addCoreSegmentOnUsage);
}
armem::data::AddSegmentsResult MemoryComponentPluginUser::addSegments(const armem::data::AddSegmentsInput& input, bool addCoreSegments)
{
std::scoped_lock lock(memoryMutex);
armem::data::AddSegmentsResult result = iceMemory.addSegments(input, addCoreSegments);
return result;
}
armem::data::CommitResult MemoryComponentPluginUser::commit(const armem::data::Commit& commitIce, const Ice::Current&)
{
std::scoped_lock lock(memoryMutex);
return iceMemory.commit(commitIce);
}
......@@ -38,6 +45,8 @@ namespace armarx::armem
armem::data::EntitySnapshotQueryResultList MemoryComponentPluginUser::getEntitySnapshots(
const armem::data::EntitySnapshotQueryList& queries, const Ice::Current&)
{
std::scoped_lock lock(memoryMutex);
armem::data::EntitySnapshotQueryResultList results;
for (const auto& query : queries)
......
#pragma once
#include <mutex>
#include <ArmarXCore/core/Component.h>
#include <RobotAPI/interface/armem/MemoryInterface.h>
......@@ -37,16 +39,20 @@ namespace armarx::armem
// WritingInterface interface
armem::data::AddSegmentsResult addSegments(const armem::data::AddSegmentsInput& input, const Ice::Current&) override;
armem::data::CommitResult commit(const armem::data::Commit& commit, const Ice::Current&) override;
virtual armem::data::AddSegmentsResult addSegments(const armem::data::AddSegmentsInput& input, const Ice::Current& = Ice::emptyCurrent) override;
armem::data::AddSegmentsResult addSegments(const armem::data::AddSegmentsInput& input, bool addCoreSegments);
virtual armem::data::CommitResult commit(const armem::data::Commit& commit, const Ice::Current& = Ice::emptyCurrent) override;
// ReadingInterface interface
armem::data::EntitySnapshotQueryResultList getEntitySnapshots(const armem::data::EntitySnapshotQueryList&, const Ice::Current&) override;
virtual armem::data::EntitySnapshotQueryResultList getEntitySnapshots(const armem::data::EntitySnapshotQueryList&, const Ice::Current& = Ice::emptyCurrent) override;
public:
std::mutex memoryMutex;
/// The actual memory.
Memory memory;
......
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