From 41109c6cb20b623dc2344651bbc6ebf10ee3fb09 Mon Sep 17 00:00:00 2001
From: Fabian Peller <fabian.peller-konrad@kit.edu>
Date: Fri, 24 Nov 2023 09:02:13 +0100
Subject: [PATCH] add new public commitLocking methods (similar to commit) to
 iceAdapter

---
 .../armem/server/MemoryToIceAdapter.cpp       | 44 +++++++++++++++++++
 .../armem/server/MemoryToIceAdapter.h         |  2 +
 2 files changed, 46 insertions(+)

diff --git a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
index 1dbb15e5c..194785757 100644
--- a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
+++ b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
@@ -157,6 +157,50 @@ namespace armarx::armem::server
         return this->_commit(commit, false);
     }
 
+    data::CommitResult
+    MemoryToIceAdapter::commitLocking(const data::Commit& commitIce, Time timeArrived)
+    {
+        ARMARX_TRACE;
+        ARMARX_CHECK_NOT_NULL(workingMemory);
+        auto handleException = [](const std::string& what)
+        {
+            data::CommitResult result;
+            data::EntityUpdateResult& r = result.results.emplace_back();
+            r.success = false;
+            r.errorMessage = what;
+            return result;
+        };
+
+        armem::Commit commit;
+        try
+        {
+            ::armarx::armem::fromIce(commitIce, commit, timeArrived);
+        }
+        catch (const aron::error::AronNotValidException& e)
+        {
+            throw;
+            return handleException(e.what());
+        }
+        catch (const Ice::Exception& e)
+        {
+            throw;
+            return handleException(e.what());
+        }
+
+        armem::CommitResult result = this->commitLocking(commit);
+        data::CommitResult resultIce;
+        toIce(resultIce, result);
+
+        return resultIce;
+    }
+
+    data::CommitResult
+    MemoryToIceAdapter::commitLocking(const data::Commit& commitIce)
+    {
+        ARMARX_TRACE;
+        return commitLocking(commitIce, armem::Time::Now());
+    }
+
     armem::CommitResult
     MemoryToIceAdapter::commitLocking(const armem::Commit& commit)
     {
diff --git a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.h b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.h
index a451054a2..f6fdfe9ea 100644
--- a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.h
+++ b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.h
@@ -37,6 +37,8 @@ namespace armarx::armem::server
         data::CommitResult commit(const data::Commit& commitIce, Time timeArrived);
         data::CommitResult commit(const data::Commit& commitIce);
         armem::CommitResult commit(const armem::Commit& commit);
+        data::CommitResult commitLocking(const data::Commit& commitIce, Time timeArrived);
+        data::CommitResult commitLocking(const data::Commit& commitIce);
         armem::CommitResult commitLocking(const armem::Commit& commit);
 
 
-- 
GitLab