From f2ef0dddb463db51c04b0d1538900d4b92d350a8 Mon Sep 17 00:00:00 2001
From: Fabian Reister <fabian.reister@kit.edu>
Date: Mon, 10 May 2021 08:21:04 +0200
Subject: [PATCH] articulated object reader and writer: taking (memory)
 Client**ComponentPluginUser via c'tor

---
 .../client/articulated_object/Reader.cpp         |  2 +-
 .../client/articulated_object/Reader.h           |  9 +++++----
 .../client/articulated_object/Writer.cpp         | 16 ++++++++--------
 .../client/articulated_object/Writer.h           | 11 +++++++----
 4 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp
index 03173cf87..91b9337bc 100644
--- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp
+++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp
@@ -18,7 +18,7 @@ namespace fs = ::std::filesystem;
 namespace armarx::armem::articulated_object
 {
 
-    Reader::Reader(ManagedIceObject& component) : MemoryConnector(component) {}
+    Reader::Reader(armem::ClientReaderComponentPluginUser& component) : component(component) {}
 
     std::optional<ArticulatedObject> Reader::get(const std::string& name, const armem::Time& timestamp)
     {
diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.h b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.h
index 2ad108d0f..2e2403ec9 100644
--- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.h
+++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.h
@@ -24,7 +24,7 @@
 #include <mutex>
 #include <optional>
 
-#include "RobotAPI/libraries/armem/client/MemoryConnector.h"
+#include "RobotAPI/libraries/armem/client.h"
 #include "RobotAPI/libraries/armem/client/Reader.h"
 
 #include "interfaces.h"
@@ -32,11 +32,11 @@
 namespace armarx::armem::articulated_object
 {
     class Reader:
-        virtual public ReaderInterface,
-        virtual public ::armarx::armem::MemoryConnector
+        virtual public ReaderInterface
+    // virtual public ::armarx::armem::MemoryConnector
     {
     public:
-        Reader(ManagedIceObject& component);
+        Reader(armem::ClientReaderComponentPluginUser& component);
         virtual ~Reader() = default;
 
         void synchronize(ArticulatedObject& obj, const armem::Time& timestamp) override;
@@ -69,6 +69,7 @@ namespace armarx::armem::articulated_object
         armem::client::Reader memoryReader;
         std::mutex memoryWriterMutex;
 
+        armem::ClientReaderComponentPluginUser& component;
     };
 
 
diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp
index 53e5f925a..97b2ce981 100644
--- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp
+++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp
@@ -15,15 +15,15 @@
 
 namespace armarx::armem::articulated_object
 {
-    Writer::Writer(ManagedIceObject& component): MemoryConnector(component) {}
+    Writer::Writer(armem::ClientComponentPluginUser& component): component(component) {}
 
     void Writer::registerPropertyDefinitions(armarx::PropertyDefinitionsPtr& def)
     {
         ARMARX_DEBUG << "Writer: registerPropertyDefinitions";
 
-        MemoryConnector::registerPropertyDefinitions(def);
+        // MemoryConnector::registerPropertyDefinitions(def);
 
-        const std::string prefix = getPropertyPrefix();
+        const std::string prefix = propertyPrefix;
 
         def->optional(properties.memoryName, prefix + "MemoryName");
 
@@ -40,7 +40,7 @@ namespace armarx::armem::articulated_object
     {
         // Wait for the memory to become available and add it as dependency.
         ARMARX_IMPORTANT << "Writer: Waiting for memory '" << properties.memoryName << "' ...";
-        auto result = useMemory(properties.memoryName);
+        auto result = component.useMemory(properties.memoryName);
         if (not result.success)
         {
             ARMARX_ERROR << result.errorMessage;
@@ -217,9 +217,9 @@ namespace armarx::armem::articulated_object
         return storeInstance(obj);
     }
 
-    const std::string& Writer::getPropertyPrefix() const
-    {
-        return propertyPrefix;
-    }
+    // const std::string& Writer::getPropertyPrefix() const
+    // {
+    //     return propertyPrefix;
+    // }
 
 } // namespace armarx::armem::articulated_object
\ No newline at end of file
diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.h b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.h
index 9e9b20758..042554566 100644
--- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.h
+++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.h
@@ -26,6 +26,7 @@
 #include "RobotAPI/libraries/armem/client/MemoryConnector.h"
 #include "RobotAPI/libraries/armem/client/Reader.h"
 #include "RobotAPI/libraries/armem/client/Writer.h"
+#include "RobotAPI/libraries/armem/client.h"
 
 #include "interfaces.h"
 
@@ -34,11 +35,11 @@ namespace armarx::armem::articulated_object
 {
 
     class Writer:
-        virtual public WriterInterface,
-        virtual public MemoryConnector
+        virtual public WriterInterface //,
+    // virtual public MemoryConnector
     {
     public:
-        Writer(ManagedIceObject& component);
+        Writer(armem::ClientComponentPluginUser& component);
         virtual ~Writer() = default;
 
 
@@ -51,7 +52,7 @@ namespace armarx::armem::articulated_object
         bool storeInstance(const ArticulatedObject& obj);
         std::optional<armem::MemoryID> storeClass(const ArticulatedObject& obj);
 
-        const std::string& getPropertyPrefix() const override;
+        // const std::string& getPropertyPrefix() const override;
 
     private:
         std::optional<armem::MemoryID> storeOrGetClass(const ArticulatedObject& obj);
@@ -77,6 +78,8 @@ namespace armarx::armem::articulated_object
 
         // key: name of object: RobotDescription::name
         std::map<std::string, MemoryID> knownObjects;
+
+        armem::ClientComponentPluginUser& component;
     };
 
 
-- 
GitLab