From f07a63df8f30795b33573ddaf750e4215118350c Mon Sep 17 00:00:00 2001
From: Fabian Reister <fabian.reister@kit.edu>
Date: Mon, 10 May 2021 08:23:18 +0200
Subject: [PATCH] armem robot mapping: taking (memory)
 Client**ComponentPluginUser via c'tor

---
 .../armem_robot_mapping/MappingDataReader.cpp    | 10 +++++-----
 .../armem_robot_mapping/MappingDataReader.h      | 14 ++++++--------
 .../armem_robot_mapping/MappingDataWriter.cpp    | 10 ++++------
 .../armem_robot_mapping/MappingDataWriter.h      | 16 ++++++----------
 4 files changed, 21 insertions(+), 29 deletions(-)

diff --git a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.cpp b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.cpp
index 9f7317320..399b866e4 100644
--- a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.cpp
+++ b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.cpp
@@ -52,8 +52,8 @@
 namespace armarx::armem
 {
 
-    MappingDataReader::MappingDataReader(ManagedIceObject& component)
-        : armarx::armem::MemoryConnector(component) {}
+    MappingDataReader::MappingDataReader(armem::ClientReaderComponentPluginUser& memoryClient)
+        : memoryClient(memoryClient) {}
 
     MappingDataReader::~MappingDataReader() = default;
 
@@ -61,9 +61,9 @@ namespace armarx::armem
         armarx::PropertyDefinitionsPtr& def)
     {
         ARMARX_DEBUG << "TransformReader: registerPropertyDefinitions";
-        MemoryConnector::registerPropertyDefinitions(def);
+        registerPropertyDefinitions(def);
 
-        const std::string prefix = getPropertyPrefix();
+        const std::string prefix = propertyPrefix;
 
         def->optional(properties.mappingMemoryName, prefix + "MappingMemoryName",
                       "Name of the mapping memory core segment to use.");
@@ -76,7 +76,7 @@ namespace armarx::armem
         // Wait for the memory to become available and add it as dependency.
         ARMARX_IMPORTANT << "TransformReader: Waiting for memory '"
                          << properties.memoryName << "' ...";
-        auto result = useMemory(properties.memoryName);
+        auto result = memoryClient.useMemory(properties.memoryName);
         if (not result.success)
         {
             ARMARX_ERROR << result.errorMessage;
diff --git a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.h b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.h
index 5135d41b8..4f1e32a85 100644
--- a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.h
+++ b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.h
@@ -27,6 +27,7 @@
 
 #include <ArmarXCore/core/application/properties/PropertyDefinitionContainer.h>
 
+#include <RobotAPI/libraries/armem/client.h>
 #include <RobotAPI/libraries/armem/client/Reader.h>
 #include <RobotAPI/libraries/armem/client/MemoryConnector.h>
 #include <RobotAPI/libraries/armem/client/query/Builder.h>
@@ -59,11 +60,10 @@ namespace armarx::armem
     *
     * Detailed description of class ExampleClient.
     */
-    class MappingDataReader :
-        virtual public armarx::armem::MemoryConnector
+    class MappingDataReader
     {
     public:
-        MappingDataReader(ManagedIceObject& component);
+        MappingDataReader(armem::ClientReaderComponentPluginUser& memoryClient);
 
         virtual ~MappingDataReader();
 
@@ -102,10 +102,6 @@ namespace armarx::armem
 
         void registerPropertyDefinitions(armarx::PropertyDefinitionsPtr& def);
 
-        const std::string& getPropertyPrefix() const override
-        {
-            return propertyPrefix;
-        }
 
         client::query::Builder buildQuery(const Query& query) const ;
 
@@ -122,7 +118,9 @@ namespace armarx::armem
         } properties;
 
 
-        const std::string propertyPrefix = "mem.mapping.read.";
+        const std::string propertyPrefix = "mem.mapping.";
+
+        armem::ClientReaderComponentPluginUser& memoryClient;
     };
 
 }  // namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.cpp b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.cpp
index 2216b159f..351d71398 100644
--- a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.cpp
+++ b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.cpp
@@ -7,8 +7,8 @@
 namespace armarx::armem
 {
 
-    MappingDataWriter::MappingDataWriter(ManagedIceObject& component)
-        : MemoryConnector(component) {}
+    MappingDataWriter::MappingDataWriter(armem::ClientWriterComponentPluginUser& component)
+        : component(component) {}
 
     MappingDataWriter::~MappingDataWriter() = default;
 
@@ -17,9 +17,7 @@ namespace armarx::armem
     {
         ARMARX_DEBUG << "TransformWriter: registerPropertyDefinitions";
 
-        MemoryConnector::registerPropertyDefinitions(def);
-
-        const std::string prefix = getPropertyPrefix();
+        const std::string prefix = propertyPrefix;
 
         def->optional(properties.mappingMemoryName, prefix + "MappingMemoryName",
                       "Name of the mapping memory core segment to use.");
@@ -32,7 +30,7 @@ namespace armarx::armem
         // Wait for the memory to become available and add it as dependency.
         ARMARX_IMPORTANT << "MappingDataWriter: Waiting for memory '" << properties.memoryName
                          << "' ...";
-        auto result = useMemory(properties.memoryName);
+        auto result = component.useMemory(properties.memoryName);
         if (not result.success)
         {
             ARMARX_ERROR << result.errorMessage;
diff --git a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.h b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.h
index 4eddff56c..e5de99674 100644
--- a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.h
+++ b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.h
@@ -27,7 +27,7 @@
 #include <RobotAPI/interface/units/LaserScannerUnit.h>
 
 #include <RobotAPI/libraries/armem/client/Writer.h>
-#include <RobotAPI/libraries/armem/client/MemoryConnector.h>
+#include <RobotAPI/libraries/armem/client.h>
 
 
 namespace armarx::armem
@@ -44,11 +44,10 @@ namespace armarx::armem
     *
     * Detailed description of class ExampleClient.
     */
-    class MappingDataWriter :
-        virtual public ::armarx::armem::MemoryConnector
+    class MappingDataWriter
     {
     public:
-        MappingDataWriter(ManagedIceObject& component);
+        MappingDataWriter(armem::ClientWriterComponentPluginUser& component);
         virtual ~MappingDataWriter();
 
         void connect();
@@ -62,11 +61,6 @@ namespace armarx::armem
 
         bool storeSensorData(const LaserScan& laserScan, const std::string& frame, const std::string& agentName, const std::int64_t& timestamp);
 
-        const std::string& getPropertyPrefix() const override
-        {
-            return propertyPrefix;
-        }
-
     private:
         armem::client::Writer memoryWriter;
 
@@ -80,7 +74,9 @@ namespace armarx::armem
         std::mutex memoryWriterMutex;
 
 
-        const std::string propertyPrefix = "mem.mapping.write.";
+        const std::string propertyPrefix = "mem.mapping.";
+
+        armem::ClientWriterComponentPluginUser& component;
     };
 
 
-- 
GitLab