From 4b4f43504aa72d79965164918f2f139a007b9dc4 Mon Sep 17 00:00:00 2001 From: uyqhv_engel <uyqhv@student.kit.edu> Date: Mon, 29 Apr 2024 18:31:22 +0200 Subject: [PATCH] build works (Yippie) --- .../libraries/skills/core/FluxioResult.cpp | 36 ------------- .../libraries/skills/core/FluxioResult.h | 51 ++++++++++++++----- .../SkillManagerComponentPluginUser.cpp | 10 ++-- 3 files changed, 43 insertions(+), 54 deletions(-) diff --git a/source/RobotAPI/libraries/skills/core/FluxioResult.cpp b/source/RobotAPI/libraries/skills/core/FluxioResult.cpp index c76c3293c..e69de29bb 100644 --- a/source/RobotAPI/libraries/skills/core/FluxioResult.cpp +++ b/source/RobotAPI/libraries/skills/core/FluxioResult.cpp @@ -1,36 +0,0 @@ -#include <stdexcept> - -namespace armarx { - - namespace skills { - - template<typename T, typename E = std::exception> - - class Result { - private: bool success_; T result_; E error_; //maybe even an error list for a better stacktrace - - public: - Result(const T& res) : success_(true), result_(res) {} - - Result(const E& err) : success_(false), error_(err) {} - - bool isSuccess() const { - return success_; - } - - T getResult() const { - if (!success_) { - throw std::logic_error("Result is not successful"); - } - return result_; - } - - E getError() const { - if (success_) { - throw std::logic_error("Result does not contain an error"); - } - return error_; - } - }; - } -} \ No newline at end of file diff --git a/source/RobotAPI/libraries/skills/core/FluxioResult.h b/source/RobotAPI/libraries/skills/core/FluxioResult.h index a607e85aa..564890f75 100644 --- a/source/RobotAPI/libraries/skills/core/FluxioResult.h +++ b/source/RobotAPI/libraries/skills/core/FluxioResult.h @@ -1,25 +1,50 @@ #include <stdexcept> +#include <memory> -namespace armarx { - namespace skills { - - template<typename T, typename E = std::exception> - class Result { +namespace armarx +{ + namespace skills + { + + template <typename T, typename E = std::exception> + class Result + { private: - bool success_; - T result_; - E error_; + const bool success; + const std::shared_ptr<const T> result; + const std::shared_ptr<const E> error; public: - Result(const T& res) : success_(true), result_(res) {} + Result(const T& res) : success(true), result(std::make_shared<const T>(res)), error(nullptr) + { + } - Result(const E& err) : success_(false), error_(err) {} + Result(const E& err) : success(false), result(nullptr), error(std::make_shared<const E>(err)) + { + } - bool isSuccess() const {} + bool isSuccess() const + { + return success; + } - T getResult() const {} + T getResult() const + { + if (!success) + { + throw std::logic_error("Result is not successful"); + } + return *result; + } - E getError() const {} + E getError() const + { + if (success) + { + throw std::logic_error("Result does not contain an error"); + } + return *error; + } }; } } diff --git a/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPluginUser.cpp b/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPluginUser.cpp index a559ad78e..94a93cffd 100644 --- a/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPluginUser.cpp +++ b/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPluginUser.cpp @@ -223,14 +223,14 @@ namespace armarx IceUtil::Optional<skills::manager::dto::FluxioSkill> SkillManagerComponentPluginUser::getSkill(const std::string& id, const Ice::Current& current) { - auto skill = this->plugin->getSkill(id); + auto result = this->plugin->getSkill(id); - if (skill.has_value()) + if (result.isSuccess()) { - const auto& s = skill->toManagerIce(); - if (s.has_value()) + const auto& skill = result.getResult().toManagerIce(); + if (skill.has_value()) { - return *s; + return *skill; } } return {}; -- GitLab