From 35542a476893ec6929678d26270f21a47c540cfa Mon Sep 17 00:00:00 2001
From: Fabian Peller-Konrad <fabian.peller-konrad@kit.edu>
Date: Wed, 19 Jan 2022 19:34:04 +0100
Subject: [PATCH] removed useless parameterization struct and fixed build
 issues

---
 .../SkillManagerMonitorWidgetController.cpp      |  2 +-
 .../interface/skills/SkillManagerInterface.ice   | 15 ++-------------
 .../skills/SkillProviderCallbackInterface.ice    |  2 --
 .../interface/skills/SkillProviderInterface.ice  |  7 +++----
 .../server/segment/SkillEventSegment.cpp         | 16 ++++++++--------
 .../segment/SkillExecutionRequestSegment.cpp     |  4 ++--
 source/RobotAPI/libraries/skills/CMakeLists.txt  |  2 --
 .../manager/SkillManagerComponentPlugin.cpp      |  2 +-
 .../provider/SkillProviderComponentPlugin.cpp    | 10 +++++-----
 .../skills/provider/SkillStatusUpdate.cpp        |  2 +-
 .../skills/provider/SkillStatusUpdate.h          |  7 +++----
 .../detail/SkillImplementationWrapper.cpp        | 12 ++++++------
 12 files changed, 32 insertions(+), 49 deletions(-)

diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
index 212869ba6..720304e62 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
@@ -162,7 +162,7 @@ namespace armarx
             aron::type::visit(v, aron_accepted_type);
 
             auto aron_args = aron::data::Dict::DynamicCastAndCheck(v.createdAron);
-            exInfo.parameterization.params = aron_args->toAronDictPtr();
+            exInfo.params = aron_args->toAronDictPtr();
         }
 
         ARMARX_INFO << "Executing skill from GUI: " << selectedSkill.providerName << "/" << selectedSkill.skillName;
diff --git a/source/RobotAPI/interface/skills/SkillManagerInterface.ice b/source/RobotAPI/interface/skills/SkillManagerInterface.ice
index 579832821..5233947af 100644
--- a/source/RobotAPI/interface/skills/SkillManagerInterface.ice
+++ b/source/RobotAPI/interface/skills/SkillManagerInterface.ice
@@ -22,24 +22,13 @@
 
 #pragma once
 
+#include <RobotAPI/interface/skills/SkillProviderCallbackInterface.ice>
 #include <RobotAPI/interface/skills/SkillProviderInterface.ice>
 
 module armarx
 {
     module skills
     {
-        module callback
-        {
-            module dti
-            {
-                interface SkillProviderCallbackInterface
-                {
-                    // used for callbacks from providers to update their skill execution status
-                    void updateStatusForSkill(provider::dto::SkillStatusUpdate statusUpdate);
-                }
-            }
-        }
-
         module manager
         {
             module dto
@@ -49,7 +38,7 @@ module armarx
                 {
                     string providerName;
                     string skillName;
-                    provider::dto::SkillParameterization parameterization;
+                    aron::data::dto::Dict params;
                 };
 
                 struct ProviderInfo
diff --git a/source/RobotAPI/interface/skills/SkillProviderCallbackInterface.ice b/source/RobotAPI/interface/skills/SkillProviderCallbackInterface.ice
index c525d76d1..b41709be3 100644
--- a/source/RobotAPI/interface/skills/SkillProviderCallbackInterface.ice
+++ b/source/RobotAPI/interface/skills/SkillProviderCallbackInterface.ice
@@ -22,10 +22,8 @@
 
 #pragma once
 
-#include <RobotAPI/interface/aron.ice>
 #include <RobotAPI/interface/skills/SkillProviderInterface.ice>
 
-
 module armarx
 {
     module skills
diff --git a/source/RobotAPI/interface/skills/SkillProviderInterface.ice b/source/RobotAPI/interface/skills/SkillProviderInterface.ice
index a3e1bccde..ffd6f7281 100644
--- a/source/RobotAPI/interface/skills/SkillProviderInterface.ice
+++ b/source/RobotAPI/interface/skills/SkillProviderInterface.ice
@@ -98,8 +98,7 @@ module armarx
                 };
 
                 dictionary<string, SkillStatusUpdate> SkillStatusUpdateMap;
-
-            };
+            }
 
             module dti
             {
@@ -109,7 +108,7 @@ module armarx
                     dto::SkillDescriptionMap getSkills();
                     dto::SkillStatusUpdate getSkillExecutionStatus(string name);
                     void executeSkill(dto::SkillExecutionInfo executionInfo);
-                    void abortSkill(string skill);
+                    dto::SkillStatusUpdate abortSkill(string skill);
                 };
 
                 dictionary<string, SkillProviderInterface*> SkillProviderMap;
@@ -118,4 +117,4 @@ module armarx
     }
 }
 
-#include <RobotAPI/interface/skills/SkillProviderCallbackInterface.ice>
+//#include <RobotAPI/interface/skills/SkillProviderCallbackInterface.ice>
diff --git a/source/RobotAPI/libraries/armem_skills/server/segment/SkillEventSegment.cpp b/source/RobotAPI/libraries/armem_skills/server/segment/SkillEventSegment.cpp
index e0e833c35..43e314fc8 100644
--- a/source/RobotAPI/libraries/armem_skills/server/segment/SkillEventSegment.cpp
+++ b/source/RobotAPI/libraries/armem_skills/server/segment/SkillEventSegment.cpp
@@ -28,13 +28,13 @@ namespace armarx::skills::segment
     void SkillEventCoreSegment::addSkillUpdateEvent(const skills::provider::dto::SkillStatusUpdate& update)
     {
         // add update for skill to memory
-        static std::map<armarx::skills::provider::dto::ExecutionStatus, std::string> ExecutionStatus2String = {
-            {armarx::skills::provider::dto::ExecutionStatus::Idle, "Idle"},
-            {armarx::skills::provider::dto::ExecutionStatus::Scheduled, "Scheduled"},
-            {armarx::skills::provider::dto::ExecutionStatus::Running, "Running"},
-            {armarx::skills::provider::dto::ExecutionStatus::Aborted, "Aborted"},
-            {armarx::skills::provider::dto::ExecutionStatus::Failed, "Failed"},
-            {armarx::skills::provider::dto::ExecutionStatus::Succeeded, "Succeeded"}
+        static std::map<armarx::skills::provider::dto::Execution::Status, std::string> ExecutionStatus2String = {
+            {armarx::skills::provider::dto::Execution::Status::Idle, "Idle"},
+            {armarx::skills::provider::dto::Execution::Status::Scheduled, "Scheduled"},
+            {armarx::skills::provider::dto::Execution::Status::Running, "Running"},
+            {armarx::skills::provider::dto::Execution::Status::Aborted, "Aborted"},
+            {armarx::skills::provider::dto::Execution::Status::Failed, "Failed"},
+            {armarx::skills::provider::dto::Execution::Status::Succeeded, "Succeeded"}
         };
 
         // create commit about new update
@@ -44,7 +44,7 @@ namespace armarx::skills::segment
         event.status = ExecutionStatus2String.at(update.status);
 
         aron::data::DictPtr aron_params = nullptr;
-        if (update.usedParameterization.params) aron_params = std::make_shared<aron::data::Dict>(update.usedParameterization.params);
+        if (update.usedParams) aron_params = std::make_shared<aron::data::Dict>(update.usedParams);
 
         aron::data::DictPtr aron_data = nullptr;
         if (update.data) aron_data = std::make_shared<aron::data::Dict>(update.data);
diff --git a/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp b/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp
index 1f6e8c377..dce0a7f05 100644
--- a/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp
+++ b/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp
@@ -40,7 +40,7 @@ namespace armarx::skills::segment
         skills::manager::dto::SkillExecutionInfo info;
         info.providerName = request.providerName;
         info.skillName = request.skillName;
-        info.parameterization.params = params->toAronDictPtr();
+        info.params = params->toAronDictPtr();
         return info;
     }
 
@@ -59,7 +59,7 @@ namespace armarx::skills::segment
         auto aron = request.toAron();
 
         aron::data::DictPtr aron_params = nullptr;
-        if (info.parameterization.params) aron_params = std::make_shared<aron::data::Dict>(info.parameterization.params);
+        if (info.params) aron_params = std::make_shared<aron::data::Dict>(info.params);
 
         aron->addElement("params", aron_params); // todo add as any type
 
diff --git a/source/RobotAPI/libraries/skills/CMakeLists.txt b/source/RobotAPI/libraries/skills/CMakeLists.txt
index 21406094e..416121d84 100644
--- a/source/RobotAPI/libraries/skills/CMakeLists.txt
+++ b/source/RobotAPI/libraries/skills/CMakeLists.txt
@@ -17,7 +17,6 @@ armarx_add_library(
         ./provider/Skill.cpp
         ./provider/SpecializedSkill.cpp
         ./provider/SkillDescription.cpp
-        ./provider/SkillParameterization.cpp
         ./provider/SkillStatusUpdate.cpp
         ./provider/helper/LambdaSkillImplementation.cpp
         ./provider/detail/SkillImplementationWrapper.cpp
@@ -27,7 +26,6 @@ armarx_add_library(
         ./provider/Skill.h
         ./provider/SpecializedSkill.h
         ./provider/SkillDescription.h
-        ./provider/SkillParameterization.h
         ./provider/SkillStatusUpdate.h
         ./provider/helper/LambdaSkillImplementation.h
         ./provider/detail/SkillImplementationWrapper.h
diff --git a/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp b/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp
index 038ed5999..514f11ad7 100644
--- a/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp
+++ b/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp
@@ -56,7 +56,7 @@ namespace armarx
             skills::provider::dto::SkillExecutionInfo exInfo;
             exInfo.skillName = info.skillName;
             exInfo.callbackInterface = myPrx;
-            exInfo.parameterization = info.parameterization;
+            exInfo.params = info.params;
             it->second->executeSkill(exInfo);
         }
         else
diff --git a/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp b/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp
index 321273b10..30bbcc86a 100644
--- a/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp
+++ b/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp
@@ -120,9 +120,9 @@ namespace armarx
         impl.statusInfo.statusUpdate.usedCallbackInterface = info.callbackInterface;
         impl.statusInfo.statusUpdate.skillName = info.skillName;
         impl.statusInfo.statusUpdate.providerName = getName();
-        if (info.parameterization.params)
+        if (info.params)
         {
-            impl.statusInfo.statusUpdate.usedParameterization.params = std::make_shared<aron::data::Dict>(info.parameterization.params);
+            impl.statusInfo.statusUpdate.usedParameterization = std::make_shared<aron::data::Dict>(info.params);
         }
 
         // make sure thread is started
@@ -160,10 +160,10 @@ namespace armarx
             impl.stoppedCheck.join();
         }
 
-        if (statusUpdate.status != skills::provider::dto::ExecutionStatus::Succeeded &&
-                statusUpdate.status != skills::provider::dto::ExecutionStatus::Failed)
+        if (statusUpdate.status != skills::provider::dto::Execution::Status::Succeeded &&
+                statusUpdate.status != skills::provider::dto::Execution::Status::Failed)
         {
-            impl.statusInfo.statusUpdate.status = skills::provider::dto::ExecutionStatus::Aborted;
+            impl.statusInfo.statusUpdate.status = skills::provider::dto::Execution::Status::Aborted;
         }
 
         return statusUpdate.toIce();
diff --git a/source/RobotAPI/libraries/skills/provider/SkillStatusUpdate.cpp b/source/RobotAPI/libraries/skills/provider/SkillStatusUpdate.cpp
index c55eaf973..f19d037dc 100644
--- a/source/RobotAPI/libraries/skills/provider/SkillStatusUpdate.cpp
+++ b/source/RobotAPI/libraries/skills/provider/SkillStatusUpdate.cpp
@@ -15,7 +15,7 @@ namespace armarx
             }
             ret.status = status;
             ret.usedCallbackInterface = usedCallbackInterface;
-            ret.usedParameterization = usedParameterization.toIce();
+            ret.usedParams = usedParameterization->toAronDictPtr();
             return ret;
         }
     }
diff --git a/source/RobotAPI/libraries/skills/provider/SkillStatusUpdate.h b/source/RobotAPI/libraries/skills/provider/SkillStatusUpdate.h
index 439adf115..5385c6f0d 100644
--- a/source/RobotAPI/libraries/skills/provider/SkillStatusUpdate.h
+++ b/source/RobotAPI/libraries/skills/provider/SkillStatusUpdate.h
@@ -3,8 +3,7 @@
 #include <string>
 #include <vector>
 
-#include "SkillParameterization.h"
-
+#include <RobotAPI/libraries/aron/core/data/variant/container/Dict.h>
 #include <RobotAPI/interface/skills/SkillProviderInterface.h>
 
 namespace armarx
@@ -15,9 +14,9 @@ namespace armarx
         {
             std::string                                         providerName;
             std::string                                         skillName;
-            SkillParameterization                               usedParameterization;
+            aron::data::DictPtr                                 usedParameterization;
             callback::dti::SkillProviderCallbackInterfacePrx    usedCallbackInterface;
-            provider::dto::ExecutionStatus                      status;
+            provider::dto::Execution::Status                    status;
             aron::data::DictPtr                                 data;
 
             provider::dto::SkillStatusUpdate toIce() const;
diff --git a/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp b/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp
index 09ecd676c..4160489c0 100644
--- a/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp
+++ b/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp
@@ -35,7 +35,7 @@ namespace armarx
             std::lock_guard l(statusInfo.skillStatusMutex);
             statusInfo.started = false;
             statusInfo.stopped = false;
-            statusInfo.statusUpdate.status = skills::provider::dto::ExecutionStatus::Idle;
+            statusInfo.statusUpdate.status = skills::provider::dto::Execution::Status::Idle;
             statusInfo.statusUpdate.data = nullptr;
             skillStarted = IceUtil::Time::now().toMilliSeconds();
             skill->reset();
@@ -47,7 +47,7 @@ namespace armarx
             statusInfo.started = true;
 
             // get params and setup variables
-            auto& aron_params = statusInfo.statusUpdate.usedParameterization.params;
+            auto& aron_params = statusInfo.statusUpdate.usedParameterization;
             if (not(aron_params) && description.acceptedType)
             {
                 throw armarx::LocalException("The Skill '" + description.skillName + "' requires a type but no params are NULL.");
@@ -58,7 +58,7 @@ namespace armarx
                 // set scheduled
                 {
                     std::lock_guard l(statusInfo.skillStatusMutex);
-                    statusInfo.statusUpdate.status = skills::provider::dto::ExecutionStatus::Scheduled;
+                    statusInfo.statusUpdate.status = skills::provider::dto::Execution::Status::Scheduled;
 
                     // do callback
                     updateStatusCallback();
@@ -68,7 +68,7 @@ namespace armarx
                 // execute
                 {
                     std::lock_guard l(statusInfo.skillStatusMutex);
-                    statusInfo.statusUpdate.status = skills::provider::dto::ExecutionStatus::Running;
+                    statusInfo.statusUpdate.status = skills::provider::dto::Execution::Status::Running;
                     updateStatusCallback();
                 }
 
@@ -90,7 +90,7 @@ namespace armarx
 
                 {
                     std::lock_guard l(statusInfo.skillStatusMutex);
-                    statusInfo.statusUpdate.status = skills::provider::dto::ExecutionStatus::Succeeded;
+                    statusInfo.statusUpdate.status = skills::provider::dto::Execution::Status::Succeeded;
                     updateStatusCallback();
                 }
             }
@@ -99,7 +99,7 @@ namespace armarx
                 ARMARX_WARNING_S << "Skill " << description.skillName << " died with exception:\n" << ex.what();
 
                 std::lock_guard l(statusInfo.skillStatusMutex);
-                statusInfo.statusUpdate.status = skills::provider::dto::ExecutionStatus::Failed;
+                statusInfo.statusUpdate.status = skills::provider::dto::Execution::Status::Failed;
                 updateStatusCallback();
             }
 
-- 
GitLab