From a9674159cb7934b0bb3466c155e31bd895fd3ff4 Mon Sep 17 00:00:00 2001
From: Fabian Reister <fabian.reister@kit.edu>
Date: Wed, 1 Feb 2023 18:39:56 +0100
Subject: [PATCH] virtual robot reader example: updating to latest version

---
 .../VirtualRobotReaderExampleClient.cpp            | 14 +++-----------
 .../VirtualRobotReaderExampleClient.h              |  8 ++++++--
 2 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.cpp b/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.cpp
index 53e51cd0b..f3d1b870c 100644
--- a/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.cpp
+++ b/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.cpp
@@ -10,11 +10,7 @@
 
 namespace armarx::robot_state
 {
-    VirtualRobotReaderExampleClient::VirtualRobotReaderExampleClient() :
-        virtualRobotReader(this->memoryNameSystem())
-    {
-    }
-
+    VirtualRobotReaderExampleClient::VirtualRobotReaderExampleClient() = default;
 
     armarx::PropertyDefinitionsPtr VirtualRobotReaderExampleClient::createPropertyDefinitions()
     {
@@ -28,8 +24,6 @@ namespace armarx::robot_state
         defs->optional(properties.updateFrequency, "p.updateFrequency [Hz]",
                        "The frequency of the running loop.");
 
-        virtualRobotReader.registerPropertyDefinitions(defs);
-
         return defs;
     }
 
@@ -47,8 +41,6 @@ namespace armarx::robot_state
 
     void VirtualRobotReaderExampleClient::onConnectComponent()
     {
-        virtualRobotReader.connect();
-
         ARMARX_IMPORTANT << "Running virtual robot synchronization example.";
 
         task = new SimpleRunningTask<>([this]()
@@ -83,7 +75,7 @@ namespace armarx::robot_state
                 // The TIMING_* macros are optional, you do not need them.
                 TIMING_START(getRobot);
 
-                robot = virtualRobotReader.getRobot(properties.robotName, now);
+                robot = virtualRobotReaderPlugin->get().getRobot(properties.robotName, now);
                 if (robot)
                 {
                     // Only print timing once the robot is loadable & loaded.
@@ -99,7 +91,7 @@ namespace armarx::robot_state
                 ARMARX_INFO << deactivateSpam(60) << "Synchronizing robot.";
 
                 TIMING_START(synchronizeRobot);
-                ARMARX_CHECK(virtualRobotReader.synchronizeRobot(*robot, now));
+                ARMARX_CHECK(virtualRobotReaderPlugin->get().synchronizeRobot(*robot, now));
                 TIMING_END_STREAM(synchronizeRobot, ARMARX_INFO);
 
 
diff --git a/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.h b/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.h
index c5b194cb2..328f847e8 100644
--- a/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.h
+++ b/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.h
@@ -26,8 +26,8 @@
 #include <ArmarXCore/core/Component.h>
 #include <ArmarXCore/core/services/tasks/TaskUtil.h>
 
+#include <RobotAPI/libraries/armem/client/plugins/ReaderWriterPlugin.h>
 #include <RobotAPI/libraries/armem/client/plugins.h>
-
 #include <RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.h>
 
 
@@ -84,7 +84,11 @@ namespace armarx::robot_state
         armarx::SimpleRunningTask<>::pointer_type task;
 
         // The reader used to get the robot state.
-        armem::robot_state::VirtualRobotReader virtualRobotReader;
+        template <typename T>
+        using ReaderWriterPlugin = armem::client::plugins::ReaderWriterPlugin<T>;
+
+        ReaderWriterPlugin<armem::robot_state::VirtualRobotReader>* virtualRobotReaderPlugin =
+            nullptr;
 
         // The Simox robot model.
         VirtualRobot::RobotPtr robot = nullptr;
-- 
GitLab