From 7d682970ed37b292cd6365024ea04e5e3ed63046 Mon Sep 17 00:00:00 2001 From: Fabian Peller <fabian.peller-konrad@kit.edu> Date: Wed, 18 Oct 2023 12:42:23 +0200 Subject: [PATCH] switch to aggregated ctors --- .../skills/SkillProviderExample/Callback.cpp | 8 +-- .../skills/SkillProviderExample/Chaining.cpp | 15 ++--- .../SkillProviderExample/HelloWorld.cpp | 11 ++-- .../SkillProviderExample/Incomplete.cpp | 9 ++- .../SkillProviderExample.cpp | 9 ++- .../skills/SkillProviderExample/Timeout.cpp | 8 +-- .../SkillManagerMonitorWidgetController.cpp | 21 ++++--- .../SkillManagerMonitorWidgetController.h | 3 +- .../armem_skills/aron_conversions.cpp | 2 +- .../segment/SkillExecutionRequestSegment.cpp | 4 +- .../libraries/skills/core/ProviderID.cpp | 14 +---- .../libraries/skills/core/ProviderID.h | 4 -- .../libraries/skills/core/ProviderInfo.cpp | 9 +-- .../libraries/skills/core/ProviderInfo.h | 5 -- .../skills/core/SkillDescription.cpp | 58 +++++-------------- .../libraries/skills/core/SkillDescription.h | 34 ++--------- .../skills/core/SkillExecutionID.cpp | 7 --- .../libraries/skills/core/SkillExecutionID.h | 5 -- .../skills/core/SkillExecutionRequest.cpp | 12 ---- .../skills/core/SkillExecutionRequest.h | 18 ++---- .../libraries/skills/core/SkillID.cpp | 26 ++------- .../RobotAPI/libraries/skills/core/SkillID.h | 6 +- .../skills/core/SkillStatusUpdate.cpp | 54 ++++++++--------- .../libraries/skills/core/SkillStatusUpdate.h | 12 ---- .../manager/SkillManagerComponentPlugin.cpp | 37 ++++++------ .../provider/SkillProviderComponentPlugin.cpp | 37 +++++++----- .../detail/SkillImplementationWrapper.cpp | 23 ++++---- 27 files changed, 160 insertions(+), 291 deletions(-) diff --git a/source/RobotAPI/components/skills/SkillProviderExample/Callback.cpp b/source/RobotAPI/components/skills/SkillProviderExample/Callback.cpp index 5fcb8e0cb..6dcea52a5 100644 --- a/source/RobotAPI/components/skills/SkillProviderExample/Callback.cpp +++ b/source/RobotAPI/components/skills/SkillProviderExample/Callback.cpp @@ -10,11 +10,9 @@ namespace armarx::skills::provider SkillDescription CallbackSkill::GetSkillDescription() { - return SkillDescription{{"ShowMeCallbacks"}, - "This skill does shows callbacks", - nullptr, - armarx::core::time::Duration::MilliSeconds(1000), - nullptr}; + return SkillDescription{.skillId = skills::SkillID{.skillName = "ShowMeCallbacks"}, + .description = "This skill does shows callbacks", + .timeout = armarx::core::time::Duration::MilliSeconds(1000)}; } Skill::MainResult diff --git a/source/RobotAPI/components/skills/SkillProviderExample/Chaining.cpp b/source/RobotAPI/components/skills/SkillProviderExample/Chaining.cpp index 1a4d32fe4..983902512 100644 --- a/source/RobotAPI/components/skills/SkillProviderExample/Chaining.cpp +++ b/source/RobotAPI/components/skills/SkillProviderExample/Chaining.cpp @@ -12,18 +12,19 @@ namespace armarx::skills::provider SkillDescription ChainingSkill::GetSkillDescription() { - return SkillDescription{{"ChainingSkill"}, - "This skill calls the Timeout skill three times. The last " - "execution is aborted due to a timeout of this skill.", - nullptr, - armarx::core::time::Duration::MilliSeconds(5000), - nullptr}; + return SkillDescription{.skillId = armarx::skills::SkillID{.skillName = "ChainingSkill"}, + .description = + "This skill calls the Timeout skill three times. The last " + "execution is aborted due to a timeout of this skill.", + .timeout = armarx::core::time::Duration::MilliSeconds(5000)}; } Skill::MainResult ChainingSkill::main(const MainInput& in) { - SkillProxy prx(manager, skills::SkillID(*getSkillId().providerId, "Timeout")); + SkillProxy prx( + manager, + skills::SkillID{.providerId = *getSkillId().providerId, .skillName = "Timeout"}); ARMARX_INFO << "CALL PROXY FIRST TIME"; callSubskill(prx); diff --git a/source/RobotAPI/components/skills/SkillProviderExample/HelloWorld.cpp b/source/RobotAPI/components/skills/SkillProviderExample/HelloWorld.cpp index ccfa7f31a..6779f1d6a 100644 --- a/source/RobotAPI/components/skills/SkillProviderExample/HelloWorld.cpp +++ b/source/RobotAPI/components/skills/SkillProviderExample/HelloWorld.cpp @@ -23,11 +23,12 @@ namespace armarx::skills::provider root_profile_params.some_list_of_matrices.push_back(Eigen::Matrix3f::Zero()); root_profile_params.some_matrix = Eigen::Matrix3f::Zero(); - return SkillDescription{{"HelloWorld"}, - "This skill logs a message on ARMARX_IMPORTANT", - root_profile_params.toAron(), - armarx::core::time::Duration::MilliSeconds(1000), - armarx::skills::Example::HelloWorldAcceptedType::ToAronType()}; + return SkillDescription{.skillId = skills::SkillID{.skillName = "HelloWorld"}, + .description = "This skill logs a message on ARMARX_IMPORTANT", + .rootProfileDefaults = root_profile_params.toAron(), + .timeout = armarx::core::time::Duration::MilliSeconds(1000), + .resultType = + armarx::skills::Example::HelloWorldAcceptedType::ToAronType()}; } Skill::MainResult diff --git a/source/RobotAPI/components/skills/SkillProviderExample/Incomplete.cpp b/source/RobotAPI/components/skills/SkillProviderExample/Incomplete.cpp index ac9bf9af3..264876a7e 100644 --- a/source/RobotAPI/components/skills/SkillProviderExample/Incomplete.cpp +++ b/source/RobotAPI/components/skills/SkillProviderExample/Incomplete.cpp @@ -17,11 +17,10 @@ namespace armarx::skills::provider IncompleteSkill::GetSkillDescription() { auto d = HelloWorldSkill::GetSkillDescription(); - return SkillDescription{{"IncompleteSkill"}, - d.description, - {}, - d.timeout + armarx::core::time::Duration::Seconds(2), - d.parametersType}; + return SkillDescription{.skillId = {.skillName = "IncompleteSkill"}, + .description = d.description, + .timeout = d.timeout + armarx::core::time::Duration::Seconds(2), + .parametersType = d.parametersType}; } Skill::PrepareResult diff --git a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp index 4230249f7..5ab480cd5 100644 --- a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp +++ b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp @@ -30,11 +30,10 @@ namespace armarx::skills::provider // Add another lambda example skill { - skills::SkillDescription fooDesc({"Foo"}, - "This skill does exactly nothing.", - nullptr, - armarx::core::time::Duration::MilliSeconds(1000), - nullptr); + skills::SkillDescription fooDesc{.skillId = SkillID{.skillName = "Foo"}, + .description = "This skill does exactly nothing.", + .timeout = + armarx::core::time::Duration::MilliSeconds(1000)}; addSkillFactory(fooDesc, []() { diff --git a/source/RobotAPI/components/skills/SkillProviderExample/Timeout.cpp b/source/RobotAPI/components/skills/SkillProviderExample/Timeout.cpp index 9c0266f8e..31dc03ae0 100644 --- a/source/RobotAPI/components/skills/SkillProviderExample/Timeout.cpp +++ b/source/RobotAPI/components/skills/SkillProviderExample/Timeout.cpp @@ -12,11 +12,9 @@ namespace armarx::skills::provider SkillDescription TimeoutSkill::GetSkillDescription() { - return SkillDescription{{"Timeout"}, - "This fails with timeout reached", - nullptr, - armarx::core::time::Duration::MilliSeconds(2000), - nullptr}; + return SkillDescription{.skillId = SkillID{.skillName = "Timeout"}, + .description = "This fails with timeout reached", + .timeout = armarx::core::time::Duration::MilliSeconds(2000)}; } PeriodicSkill::StepResult diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp index 87450efc5..191c16019 100644 --- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp +++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp @@ -231,7 +231,8 @@ namespace armarx { auto description = skills::SkillDescription::FromIce(desc); auto skillId = skills::SkillID::FromIce(sid); - auto providerId = skills::ProviderID(skillId); + auto providerId = skillId.providerId.value_or( + skills::ProviderID{.providerName = "UNKNOWN PROVIDER NAME"}); ARMARX_CHECK(skillId.isFullySpecified()); @@ -245,7 +246,7 @@ namespace armarx { auto* providerItem = widget.treeWidgetSkills->topLevelItem(i); auto providerName = providerItem->text(0).toStdString(); - skills::ProviderID providerId(providerName); + skills::ProviderID providerId{.providerName = providerName}; if (skills.find(providerId) == skills.end()) { @@ -264,7 +265,9 @@ namespace armarx auto* skillItem = providerItem->child(j); auto skillName = skillItem->text(0).toStdString(); - skills::SkillID skillId(providerName, skillName); + skills::SkillID skillId{.providerId = + skills::ProviderID{.providerName = providerName}, + .skillName = skillName}; if (providedSkills.find(skillId) == providedSkills.end()) { @@ -286,7 +289,7 @@ namespace armarx { auto el = widget.treeWidgetSkills->topLevelItem(i); auto providerName = el->text(0).toStdString(); - skills::ProviderID elProviderId(providerName); + skills::ProviderID elProviderId{.providerName = providerName}; if (providerId == elProviderId) { @@ -308,7 +311,7 @@ namespace armarx { auto el = providerItem->child(i); auto skillName = el->text(0).toStdString(); - skills::SkillID elSkillId(providerId.providerName, skillName); + skills::SkillID elSkillId{providerId, skillName}; if (skillId == elSkillId) { @@ -441,7 +444,7 @@ namespace armarx std::scoped_lock l(updateMutex); - auto providerId = skills::ProviderID(selectedSkill.skillId); + auto providerId = *selectedSkill.skillId.providerId; const auto& skillDescriptions = skills.at(providerId); if (skillDescriptions.find(selectedSkill.skillId) == skillDescriptions.end()) { @@ -453,10 +456,10 @@ namespace armarx char hostname[HOST_NAME_MAX]; gethostname(hostname, HOST_NAME_MAX); - skills::SkillExecutionRequest req(selectedSkill.skillId, + skills::SkillExecutionRequest req{selectedSkill.skillId, "Skills.Manager GUI (hostname: " + std::string(hostname) + ")", - data); + data}; ARMARX_CHECK(selectedSkill.skillId.isFullySpecified()); // sanity check ARMARX_IMPORTANT << "Executing skill from GUI: " << selectedSkill.skillId << "."; @@ -525,7 +528,7 @@ namespace armarx skillsArgumentsTreeWidgetItem = nullptr; // We assert that the skill exists - ARMARX_CHECK(skills.count(selectedSkill.skillId) > 0); + ARMARX_CHECK(skills.count(*selectedSkill.skillId.providerId) > 0); ARMARX_CHECK(skills.at(*selectedSkill.skillId.providerId).count(selectedSkill.skillId) > 0); auto skillDesc = skills.at(*selectedSkill.skillId.providerId).at(selectedSkill.skillId); diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h index 665982d64..1fd2e2f11 100644 --- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h +++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h @@ -154,7 +154,8 @@ namespace armarx skills::SkillID skillId; // make default constructable - SelectedSkill() : skillId({""}, "") + SelectedSkill() : + skillId{.providerId = skills::ProviderID{.providerName = ""}, .skillName = ""} { } } selectedSkill; diff --git a/source/RobotAPI/libraries/armem_skills/aron_conversions.cpp b/source/RobotAPI/libraries/armem_skills/aron_conversions.cpp index 13ea60902..3b1d8925f 100644 --- a/source/RobotAPI/libraries/armem_skills/aron_conversions.cpp +++ b/source/RobotAPI/libraries/armem_skills/aron_conversions.cpp @@ -133,7 +133,7 @@ namespace armarx::armem fromAron(const armarx::skills::arondto::SkillID& dto, skills::SkillID& bo) { bo.skillName = dto.skillName; - bo.providerId = skills::ProviderID(""); + bo.providerId = skills::ProviderID{.providerName = ""}; fromAron(dto.providerId, *bo.providerId); } diff --git a/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp b/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp index 4b57e0b44..833deb3f6 100644 --- a/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp +++ b/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp @@ -39,7 +39,9 @@ namespace armarx::skills::segment skills::arondto::SkillExecutionRequest request; request.fromAron(commitDataAron); - skills::SkillExecutionRequest info({{""}, ""}, "", nullptr); + skills::SkillExecutionRequest info{ + .skillId = SkillID{.providerId = ProviderID{.providerName = ""}, .skillName = ""}, + .executorName = ""}; armem::fromAron(request, info); return info; } diff --git a/source/RobotAPI/libraries/skills/core/ProviderID.cpp b/source/RobotAPI/libraries/skills/core/ProviderID.cpp index 990898f38..53d6aad68 100644 --- a/source/RobotAPI/libraries/skills/core/ProviderID.cpp +++ b/source/RobotAPI/libraries/skills/core/ProviderID.cpp @@ -6,16 +6,6 @@ namespace armarx { namespace skills { - ProviderID::ProviderID(const std::string& pname) : providerName(pname) - { - } - - ProviderID::ProviderID(const skills::SkillID& skillid) - { - ARMARX_CHECK(skillid.providerId.has_value()); - providerName = skillid.providerId->providerName; - } - bool ProviderID::operator==(const ProviderID& other) const { @@ -43,13 +33,13 @@ namespace armarx ProviderID ProviderID::FromIce(const manager::dto::ProviderID& s) { - return ProviderID(s.providerName); + return ProviderID{.providerName = s.providerName}; } ProviderID ProviderID::FromIce(const callback::dto::ProviderID& s) { - return ProviderID(s.providerName); + return ProviderID{.providerName = s.providerName}; } manager::dto::ProviderID diff --git a/source/RobotAPI/libraries/skills/core/ProviderID.h b/source/RobotAPI/libraries/skills/core/ProviderID.h index 10079220b..5687f6491 100644 --- a/source/RobotAPI/libraries/skills/core/ProviderID.h +++ b/source/RobotAPI/libraries/skills/core/ProviderID.h @@ -15,10 +15,6 @@ namespace armarx class ProviderID { public: - ProviderID() = default; - ProviderID(const skills::SkillID& skillid); - ProviderID(const std::string& pName); - bool operator==(const ProviderID& other) const; bool operator!=(const ProviderID& other) const; bool operator<(const ProviderID& other) const; diff --git a/source/RobotAPI/libraries/skills/core/ProviderInfo.cpp b/source/RobotAPI/libraries/skills/core/ProviderInfo.cpp index 7ae36dbfa..135b81c59 100644 --- a/source/RobotAPI/libraries/skills/core/ProviderInfo.cpp +++ b/source/RobotAPI/libraries/skills/core/ProviderInfo.cpp @@ -4,13 +4,6 @@ namespace armarx { namespace skills { - ProviderInfo::ProviderInfo(const ProviderID& pid, - const provider::dti::SkillProviderInterfacePrx& i, - const std::map<SkillID, SkillDescription>& skills) : - providerId(pid), providerInterface(i), providedSkills(skills) - { - } - skills::manager::dto::ProviderInfo ProviderInfo::toIce() const { @@ -33,7 +26,7 @@ namespace armarx { m.insert({skills::SkillID::FromIce(k), skills::SkillDescription::FromIce(v)}); } - return ProviderInfo(skills::ProviderID::FromIce(i.providerId), i.providerInterface, m); + return ProviderInfo{skills::ProviderID::FromIce(i.providerId), i.providerInterface, m}; } } // namespace skills } // namespace armarx diff --git a/source/RobotAPI/libraries/skills/core/ProviderInfo.h b/source/RobotAPI/libraries/skills/core/ProviderInfo.h index f9d3ac132..438a2cf9d 100644 --- a/source/RobotAPI/libraries/skills/core/ProviderInfo.h +++ b/source/RobotAPI/libraries/skills/core/ProviderInfo.h @@ -23,11 +23,6 @@ namespace armarx provider::dti::SkillProviderInterfacePrx providerInterface; std::map<SkillID, SkillDescription> providedSkills; - ProviderInfo() = default; - ProviderInfo(const ProviderID& pid, - const provider::dti::SkillProviderInterfacePrx& i, - const std::map<SkillID, SkillDescription>& skills); - skills::manager::dto::ProviderInfo toIce() const; static ProviderInfo FromIce(const manager::dto::ProviderInfo&); diff --git a/source/RobotAPI/libraries/skills/core/SkillDescription.cpp b/source/RobotAPI/libraries/skills/core/SkillDescription.cpp index 474b16398..2fa37b33c 100644 --- a/source/RobotAPI/libraries/skills/core/SkillDescription.cpp +++ b/source/RobotAPI/libraries/skills/core/SkillDescription.cpp @@ -7,34 +7,6 @@ namespace armarx { namespace skills { - - SkillDescription::SkillDescription(const SkillID& id, - const std::string& desc, - const aron::data::DictPtr& defaultParameters, - const armarx::core::time::Duration& timeout, - const aron::type::ObjectPtr& parametersType, - const aron::type::ObjectPtr& resultType) : - skillId(id), - description(desc), - rootProfileDefaults(defaultParameters), - timeout(timeout), - parametersType(parametersType), - resultType(resultType) - { - } - - // LEGACY CTOR - SkillDescription::SkillDescription(const std::string& skillName, - const std::string& desc, - const std::vector<std::string>&, - const armarx::core::time::Duration& timeout, - const aron::data::DictPtr& data, - const aron::type::ObjectPtr& parametersType, - const aron::type::ObjectPtr& resultType) : - SkillDescription({skillName}, desc, data, timeout, parametersType, resultType) - { - } - provider::dto::SkillDescription SkillDescription::toProviderIce() const { @@ -69,13 +41,14 @@ namespace armarx { armarx::core::time::Duration _d; armarx::core::time::fromIce(i.timeout, _d); - return SkillDescription( - SkillID::FromIce(i.skillId, pid), - i.description, - armarx::aron::data::Dict::FromAronDictDTO(i.rootProfileDefaults), - _d, - armarx::aron::type::Object::FromAronObjectDTO(i.parametersType), - armarx::aron::type::Object::FromAronObjectDTO(i.resultType)); + return SkillDescription{ + .skillId = SkillID::FromIce(i.skillId, pid), + .description = i.description, + .rootProfileDefaults = + armarx::aron::data::Dict::FromAronDictDTO(i.rootProfileDefaults), + .timeout = _d, + .parametersType = armarx::aron::type::Object::FromAronObjectDTO(i.parametersType), + .resultType = armarx::aron::type::Object::FromAronObjectDTO(i.resultType)}; } SkillDescription @@ -83,13 +56,14 @@ namespace armarx { armarx::core::time::Duration _d; armarx::core::time::fromIce(i.timeout, _d); - return SkillDescription( - SkillID::FromIce(i.skillId), - i.description, - armarx::aron::data::Dict::FromAronDictDTO(i.rootProfileDefaults), - _d, - armarx::aron::type::Object::FromAronObjectDTO(i.parametersType), - armarx::aron::type::Object::FromAronObjectDTO(i.resultType)); + return SkillDescription{ + .skillId = SkillID::FromIce(i.skillId), + .description = i.description, + .rootProfileDefaults = + armarx::aron::data::Dict::FromAronDictDTO(i.rootProfileDefaults), + .timeout = _d, + .parametersType = armarx::aron::type::Object::FromAronObjectDTO(i.parametersType), + .resultType = armarx::aron::type::Object::FromAronObjectDTO(i.resultType)}; } } // namespace skills } // namespace armarx diff --git a/source/RobotAPI/libraries/skills/core/SkillDescription.h b/source/RobotAPI/libraries/skills/core/SkillDescription.h index 509411adb..4bc8a3cd8 100644 --- a/source/RobotAPI/libraries/skills/core/SkillDescription.h +++ b/source/RobotAPI/libraries/skills/core/SkillDescription.h @@ -17,36 +17,12 @@ namespace armarx { struct SkillDescription { - - SkillDescription() = default; - SkillDescription(const SkillID& id, - const std::string& desc, - const aron::data::DictPtr& data = nullptr, - const armarx::core::time::Duration& timeout = - armarx::core::time::Duration::MilliSeconds(-1), - const aron::type::ObjectPtr& parametersType = nullptr, - const aron::type::ObjectPtr& resultType = nullptr); - - // LEGACY - SkillDescription(const std::string& skillName, - const std::string& desc, - const std::vector<std::string>& ignore_me_i_am_not_used_anymore, - const armarx::core::time::Duration& timeout = - armarx::core::time::Duration::MilliSeconds(-1), - const aron::data::DictPtr& data = nullptr, - const aron::type::ObjectPtr& parametersType = nullptr, - const aron::type::ObjectPtr& resultType = nullptr); - - SkillDescription(const SkillDescription&) = default; - - SkillDescription& operator=(const SkillDescription&) = default; - SkillID skillId; - std::string description; - aron::data::DictPtr rootProfileDefaults; - armarx::core::time::Duration timeout; - aron::type::ObjectPtr parametersType; - aron::type::ObjectPtr resultType; + std::string description = ""; + aron::data::DictPtr rootProfileDefaults = nullptr; + armarx::core::time::Duration timeout = armarx::core::time::Duration::MilliSeconds(-1); + aron::type::ObjectPtr parametersType = nullptr; + aron::type::ObjectPtr resultType = nullptr; provider::dto::SkillDescription toProviderIce() const; manager::dto::SkillDescription toManagerIce() const; diff --git a/source/RobotAPI/libraries/skills/core/SkillExecutionID.cpp b/source/RobotAPI/libraries/skills/core/SkillExecutionID.cpp index f048167a1..d2f305c1a 100644 --- a/source/RobotAPI/libraries/skills/core/SkillExecutionID.cpp +++ b/source/RobotAPI/libraries/skills/core/SkillExecutionID.cpp @@ -4,13 +4,6 @@ namespace armarx { namespace skills { - SkillExecutionID::SkillExecutionID(const SkillID& id, - const std::string& executorName, - const armarx::core::time::DateTime& time) : - skillId(id), executorName(executorName), executionStartedTime(time) - { - } - skills::manager::dto::SkillExecutionID SkillExecutionID::toManagerIce() const { diff --git a/source/RobotAPI/libraries/skills/core/SkillExecutionID.h b/source/RobotAPI/libraries/skills/core/SkillExecutionID.h index 6d9975bb4..6c4975388 100644 --- a/source/RobotAPI/libraries/skills/core/SkillExecutionID.h +++ b/source/RobotAPI/libraries/skills/core/SkillExecutionID.h @@ -18,11 +18,6 @@ namespace armarx { struct SkillExecutionID { - SkillExecutionID() = default; - SkillExecutionID(const SkillID&, - const std::string& executorName, - const armarx::core::time::DateTime&); - bool operator==(const SkillExecutionID& other) const { diff --git a/source/RobotAPI/libraries/skills/core/SkillExecutionRequest.cpp b/source/RobotAPI/libraries/skills/core/SkillExecutionRequest.cpp index f4fdceca8..2d6a0181b 100644 --- a/source/RobotAPI/libraries/skills/core/SkillExecutionRequest.cpp +++ b/source/RobotAPI/libraries/skills/core/SkillExecutionRequest.cpp @@ -4,18 +4,6 @@ namespace armarx { namespace skills { - SkillExecutionRequest::SkillExecutionRequest( - const skills::SkillID& skill, - const std::string executorName, - const armarx::aron::data::DictPtr& params, - const callback::dti::SkillProviderCallbackInterfacePrx& callback) : - skillId(skill), - executorName(executorName), - parameters(params), - callbackInterface(callback) - { - } - manager::dto::SkillExecutionRequest SkillExecutionRequest::toManagerIce() const { diff --git a/source/RobotAPI/libraries/skills/core/SkillExecutionRequest.h b/source/RobotAPI/libraries/skills/core/SkillExecutionRequest.h index 7031f8db1..d1f5bbcdd 100644 --- a/source/RobotAPI/libraries/skills/core/SkillExecutionRequest.h +++ b/source/RobotAPI/libraries/skills/core/SkillExecutionRequest.h @@ -21,18 +21,6 @@ namespace armarx class SkillExecutionRequest { public: - skills::SkillID skillId; - std::string executorName; - armarx::aron::data::DictPtr parameters; - callback::dti::SkillProviderCallbackInterfacePrx callbackInterface; - - SkillExecutionRequest() = default; - SkillExecutionRequest( - const skills::SkillID& skill, - const std::string executorName, - const armarx::aron::data::DictPtr& params, - const callback::dti::SkillProviderCallbackInterfacePrx& callback = nullptr); - manager::dto::SkillExecutionRequest toManagerIce() const; provider::dto::SkillExecutionRequest toProviderIce() const; @@ -40,6 +28,12 @@ namespace armarx static SkillExecutionRequest FromIce(const provider::dto::SkillExecutionRequest&, const std::optional<skills::ProviderID>& providerId = std::nullopt); + + + skills::SkillID skillId; + std::string executorName; + armarx::aron::data::DictPtr parameters = nullptr; + callback::dti::SkillProviderCallbackInterfacePrx callbackInterface = nullptr; }; } // namespace skills } // namespace armarx diff --git a/source/RobotAPI/libraries/skills/core/SkillID.cpp b/source/RobotAPI/libraries/skills/core/SkillID.cpp index fea0eca31..ece268aee 100644 --- a/source/RobotAPI/libraries/skills/core/SkillID.cpp +++ b/source/RobotAPI/libraries/skills/core/SkillID.cpp @@ -4,24 +4,6 @@ namespace armarx { namespace skills { - SkillID::SkillID(const std::string& skillName) : - providerId(std::nullopt), skillName(skillName) - { - } - - SkillID::SkillID(const ProviderID& providerId, const std::string& skillName) : - providerId(providerId), skillName(skillName) - { - if (simox::alg::contains(providerId.providerName, NAME_SEPARATOR) or - simox::alg::contains(skillName, NAME_SEPARATOR)) - { - throw error::SkillException( - __PRETTY_FUNCTION__, - std::string("A skill provider or a skill contains the blacklisted token '") + - NAME_SEPARATOR + "'."); - } - } - bool SkillID::operator==(const SkillID& other) const { @@ -49,7 +31,9 @@ namespace armarx SkillID SkillID::FromIce(const manager::dto::SkillID& s) { - return SkillID(s.providerId.providerName, s.skillName); + return SkillID{.providerId = + skills::ProviderID{.providerName = s.providerId.providerName}, + .skillName = s.skillName}; } SkillID @@ -58,9 +42,9 @@ namespace armarx { if (providerId.has_value()) { - return SkillID(*providerId, s.skillName); + return SkillID{.providerId = *providerId, .skillName = s.skillName}; } - return SkillID(s.skillName); + return SkillID{.skillName = s.skillName}; } manager::dto::SkillID diff --git a/source/RobotAPI/libraries/skills/core/SkillID.h b/source/RobotAPI/libraries/skills/core/SkillID.h index 5d0da2a67..e611a8282 100644 --- a/source/RobotAPI/libraries/skills/core/SkillID.h +++ b/source/RobotAPI/libraries/skills/core/SkillID.h @@ -19,10 +19,6 @@ namespace armarx public: static const constexpr char* NAME_SEPARATOR = "/"; - SkillID() = default; - SkillID(const std::string& skillName); - SkillID(const ProviderID& providerId, const std::string& skillName); - bool operator==(const SkillID& other) const; bool operator!=(const SkillID& other) const; bool operator<(const SkillID& other) const; @@ -59,7 +55,7 @@ namespace armarx std::string toString() const; - std::optional<ProviderID> providerId; + std::optional<ProviderID> providerId = std::nullopt; std::string skillName; }; diff --git a/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.cpp b/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.cpp index c5c7e3ac7..986aab1bc 100644 --- a/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.cpp +++ b/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.cpp @@ -239,14 +239,6 @@ namespace armarx throw error::SkillException(__PRETTY_FUNCTION__, "Should not happen!"); } - SkillStatusUpdateBase::SkillStatusUpdateBase( - const SkillExecutionID& exec, - const aron::data::DictPtr& params, - const callback::dti::SkillProviderCallbackInterfacePrx& i) : - executionId(exec), parameters(params), callbackInterface(i) - { - } - manager::dto::SkillStatusUpdate SkillStatusUpdateBase::toManagerIce() const { @@ -326,10 +318,10 @@ namespace armarx TerminatedSkillStatusUpdate TerminatedSkillStatusUpdate::FromIce(const manager::dto::SkillStatusUpdate& update) { - TerminatedSkillStatusUpdate ret( - skills::SkillExecutionID::FromIce(update.executionId), - armarx::aron::data::Dict::FromAronDictDTO(update.parameters), - update.callbackInterface); + TerminatedSkillStatusUpdate ret{ + {.executionId = skills::SkillExecutionID::FromIce(update.executionId), + .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters), + .callbackInterface = update.callbackInterface}}; skills::fromIce(update.status, ret.status); return ret; } @@ -338,10 +330,10 @@ namespace armarx TerminatedSkillStatusUpdate::FromIce(const provider::dto::SkillStatusUpdate& update, const std::optional<skills::ProviderID>& providerId) { - TerminatedSkillStatusUpdate ret( - skills::SkillExecutionID::FromIce(update.executionId, providerId), - armarx::aron::data::Dict::FromAronDictDTO(update.parameters), - update.callbackInterface); + TerminatedSkillStatusUpdate ret{ + {.executionId = skills::SkillExecutionID::FromIce(update.executionId, providerId), + .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters), + .callbackInterface = update.callbackInterface}}; skills::fromIce(update.status, ret.status); return ret; } @@ -349,9 +341,10 @@ namespace armarx SkillStatusUpdate SkillStatusUpdate::FromIce(const manager::dto::SkillStatusUpdate& update) { - SkillStatusUpdate ret(skills::SkillExecutionID::FromIce(update.executionId), - armarx::aron::data::Dict::FromAronDictDTO(update.parameters), - update.callbackInterface); + SkillStatusUpdate ret{ + {.executionId = skills::SkillExecutionID::FromIce(update.executionId), + .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters), + .callbackInterface = update.callbackInterface}}; skills::fromIce(update.status, ret.status); return ret; } @@ -360,9 +353,10 @@ namespace armarx SkillStatusUpdate::FromIce(const provider::dto::SkillStatusUpdate& update, const std::optional<skills::ProviderID>& providerId) { - SkillStatusUpdate ret(skills::SkillExecutionID::FromIce(update.executionId, providerId), - armarx::aron::data::Dict::FromAronDictDTO(update.parameters), - update.callbackInterface); + SkillStatusUpdate ret{ + {.executionId = skills::SkillExecutionID::FromIce(update.executionId, providerId), + .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters), + .callbackInterface = update.callbackInterface}}; skills::fromIce(update.status, ret.status); return ret; } @@ -370,10 +364,10 @@ namespace armarx ActiveOrTerminatedSkillStatusUpdate ActiveOrTerminatedSkillStatusUpdate::FromIce(const manager::dto::SkillStatusUpdate& update) { - ActiveOrTerminatedSkillStatusUpdate ret( - skills::SkillExecutionID::FromIce(update.executionId), - armarx::aron::data::Dict::FromAronDictDTO(update.parameters), - update.callbackInterface); + ActiveOrTerminatedSkillStatusUpdate ret{ + {.executionId = skills::SkillExecutionID::FromIce(update.executionId), + .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters), + .callbackInterface = update.callbackInterface}}; skills::fromIce(update.status, ret.status); return ret; } @@ -383,10 +377,10 @@ namespace armarx const provider::dto::SkillStatusUpdate& update, const std::optional<skills::ProviderID>& providerId) { - ActiveOrTerminatedSkillStatusUpdate ret( - skills::SkillExecutionID::FromIce(update.executionId, providerId), - armarx::aron::data::Dict::FromAronDictDTO(update.parameters), - update.callbackInterface); + ActiveOrTerminatedSkillStatusUpdate ret{ + {.executionId = skills::SkillExecutionID::FromIce(update.executionId, providerId), + .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters), + .callbackInterface = update.callbackInterface}}; skills::fromIce(update.status, ret.status); return ret; } diff --git a/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.h b/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.h index 148cd8312..d517fc1ec 100644 --- a/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.h +++ b/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.h @@ -67,12 +67,6 @@ namespace armarx aron::data::DictPtr parameters; callback::dti::SkillProviderCallbackInterfacePrx callbackInterface; - SkillStatusUpdateBase() = default; - SkillStatusUpdateBase(const SkillExecutionID& exec, - const aron::data::DictPtr& params, - const callback::dti::SkillProviderCallbackInterfacePrx& i); - SkillStatusUpdateBase(const SkillStatusUpdateBase&) = default; - // data aron::data::DictPtr result = nullptr; @@ -86,8 +80,6 @@ namespace armarx { TerminatedSkillStatus status = TerminatedSkillStatus::Failed; - using SkillStatusUpdateBase::SkillStatusUpdateBase; - bool hasBeenTerminated() const { @@ -111,8 +103,6 @@ namespace armarx { ActiveOrTerminatedSkillStatus status = ActiveOrTerminatedSkillStatus::Failed; - using SkillStatusUpdateBase::SkillStatusUpdateBase; - bool hasBeenTerminated() const { @@ -138,8 +128,6 @@ namespace armarx { SkillStatus status = SkillStatus::Constructing; - using SkillStatusUpdateBase::SkillStatusUpdateBase; - bool operator<(const SkillStatusUpdate& o) const { diff --git a/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp b/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp index 233aa841b..3999c956b 100644 --- a/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp +++ b/source/RobotAPI/libraries/skills/manager/SkillManagerComponentPlugin.cpp @@ -49,12 +49,11 @@ namespace armarx::plugins SkillManagerComponentPlugin::addProvider(const skills::ProviderInfo& providerInfo) { std::scoped_lock l(skillProviderMapMutex); - if (skillProviderMap.find(providerInfo.providerId.providerName) == skillProviderMap.end()) + if (skillProviderMap.find(providerInfo.providerId) == skillProviderMap.end()) { ARMARX_INFO << "Adding a provider with name '" << providerInfo.providerId.providerName << "'."; - skillProviderMap.insert( - {providerInfo.providerId.providerName, providerInfo.providerInterface}); + skillProviderMap.insert({providerInfo.providerId, providerInfo.providerInterface}); } else { @@ -62,7 +61,7 @@ namespace armarx::plugins << providerInfo.providerId.providerName << "' but the provider already exists. " << "Overwriting the old provider info."; - skillProviderMap[providerInfo.providerId.providerName] = providerInfo.providerInterface; + skillProviderMap[providerInfo.providerId] = providerInfo.providerInterface; } } @@ -70,7 +69,7 @@ namespace armarx::plugins SkillManagerComponentPlugin::removeProvider(const skills::ProviderID& providerId) { std::scoped_lock l(skillProviderMapMutex); - if (auto it = skillProviderMap.find(providerId.providerName); it != skillProviderMap.end()) + if (auto it = skillProviderMap.find(providerId); it != skillProviderMap.end()) { ARMARX_INFO << "Removing a provider with name '" << providerId.providerName << "'."; skillProviderMap.erase(it); @@ -89,12 +88,12 @@ namespace armarx::plugins std::unique_lock l(skillProviderMapMutex); - skills::ProviderID provderId(executionRequest.skillId); + skills::ProviderID provderId(*executionRequest.skillId.providerId); // TODO: Really support regexes! if (executionRequest.skillId.providerId->providerName == "*") { - provderId = getFirstProviderNameThatHasSkill(executionRequest.skillId.skillName); + provderId = getFirstProviderNameThatHasSkill(executionRequest.skillId); } @@ -116,11 +115,11 @@ namespace armarx::plugins try { - skills::SkillExecutionRequest provider_executionRequest( - executionRequest.skillId, - executionRequest.executorName, - executionRequest.parameters, - myPrx); + skills::SkillExecutionRequest provider_executionRequest{ + .skillId = executionRequest.skillId, + .executorName = executionRequest.executorName, + .parameters = executionRequest.parameters, + .callbackInterface = myPrx}; auto async = provider->begin_executeSkill(provider_executionRequest.toProviderIce()); @@ -162,12 +161,12 @@ namespace armarx::plugins std::unique_lock l(skillProviderMapMutex); - skills::ProviderID provderId(executionRequest.skillId); + skills::ProviderID provderId(*executionRequest.skillId.providerId); // TODO: Really support regexes! if (executionRequest.skillId.providerId->providerName == "*") { - provderId = getFirstProviderNameThatHasSkill(executionRequest.skillId.skillName); + provderId = getFirstProviderNameThatHasSkill(executionRequest.skillId); } @@ -189,11 +188,11 @@ namespace armarx::plugins try { - skills::SkillExecutionRequest provider_executionRequest( - executionRequest.skillId, - executionRequest.executorName, - executionRequest.parameters, - myPrx); + skills::SkillExecutionRequest provider_executionRequest{ + .skillId = executionRequest.skillId, + .executorName = executionRequest.executorName, + .parameters = executionRequest.parameters, + .callbackInterface = myPrx}; auto async = provider->begin_executeSkillAsync(provider_executionRequest.toProviderIce()); diff --git a/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp b/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp index e5c169c04..e9e86b054 100644 --- a/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp +++ b/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp @@ -26,7 +26,9 @@ namespace armarx::plugins const std::string providerName = p.getName(); // register self to manager - skills::ProviderInfo i(skills::ProviderID(providerName), myPrx, getSkillDescriptions()); + skills::ProviderInfo i{.providerId = skills::ProviderID{.providerName = providerName}, + .providerInterface = myPrx, + .providedSkills = getSkillDescriptions()}; ARMARX_INFO << "Adding provider to manager: " << i.providerId; manager->addProvider(i.toIce()); // add provider info to manager @@ -188,12 +190,13 @@ namespace armarx::plugins { ARMARX_CHECK(executionRequest.skillId.isFullySpecified()); - skills::SkillExecutionID executionId(executionRequest.skillId, - executionRequest.executorName, - armarx::core::time::DateTime::Now()); + skills::SkillExecutionID executionId{.skillId = executionRequest.skillId, + .executorName = executionRequest.executorName, + .executionStartedTime = + armarx::core::time::DateTime::Now()}; skills::SkillStatusUpdate ret{ - executionId, executionRequest.parameters, executionRequest.callbackInterface}; + {executionId, executionRequest.parameters, executionRequest.callbackInterface}}; skills::detail::SkillRuntime* wrapper; { @@ -245,9 +248,9 @@ namespace armarx::plugins { ARMARX_CHECK(executionRequest.skillId.isFullySpecified()); - skills::SkillExecutionID executionId(executionRequest.skillId, + skills::SkillExecutionID executionId{executionRequest.skillId, executionRequest.executorName, - armarx::core::time::DateTime::Now()); + armarx::core::time::DateTime::Now()}; skills::detail::SkillRuntime* wrapper; { @@ -387,7 +390,7 @@ namespace armarx const skills::provider::dto::SkillID& skillId, const Ice::Current& /*unused*/) { - auto id = skills::SkillID::FromIce(skillId, getName()); + auto id = skills::SkillID::FromIce(skillId, skills::ProviderID{.providerName = getName()}); auto o = plugin->getSkillDescription(id); if (o.has_value()) { @@ -412,7 +415,8 @@ namespace armarx const skills::provider::dto::SkillExecutionID& executionId, const Ice::Current& /*unused*/) { - auto execId = skills::SkillExecutionID::FromIce(executionId, getName()); + auto execId = skills::SkillExecutionID::FromIce( + executionId, skills::ProviderID{.providerName = getName()}); auto o = plugin->getSkillExecutionStatus(execId); if (o.has_value()) { @@ -438,7 +442,8 @@ namespace armarx const skills::provider::dto::SkillExecutionRequest& info, const Ice::Current& /*unused*/) { - auto exec = skills::SkillExecutionRequest::FromIce(info, getName()); + auto exec = skills::SkillExecutionRequest::FromIce( + info, skills::ProviderID{.providerName = getName()}); auto up = this->plugin->executeSkill(exec); return up.toProviderIce(); } @@ -448,7 +453,8 @@ namespace armarx const skills::provider::dto::SkillExecutionRequest& info, const Ice::Current& current /*unused*/) { - auto exec = skills::SkillExecutionRequest::FromIce(info, getName()); + auto exec = skills::SkillExecutionRequest::FromIce( + info, skills::ProviderID{.providerName = getName()}); auto id = this->plugin->executeSkillAsync(exec); return id.toProviderIce(); } @@ -461,7 +467,8 @@ namespace armarx { skills::provider::dto::ParameterUpdateResult res; - auto exec = skills::SkillExecutionID::FromIce(id, getName()); + auto exec = + skills::SkillExecutionID::FromIce(id, skills::ProviderID{.providerName = getName()}); auto prep = armarx::aron::data::Dict::FromAronDictDTO(input); res.success = this->plugin->updateSkillParameters(exec, prep); return res; @@ -472,7 +479,8 @@ namespace armarx const Ice::Current& /*unused*/) { skills::provider::dto::AbortSkillResult res; - auto exec = skills::SkillExecutionID::FromIce(id, getName()); + auto exec = + skills::SkillExecutionID::FromIce(id, skills::ProviderID{.providerName = getName()}); res.success = this->plugin->abortSkill(exec); return res; } @@ -483,7 +491,8 @@ namespace armarx const Ice::Current& /*unused*/) { skills::provider::dto::AbortSkillResult res; - auto exec = skills::SkillExecutionID::FromIce(id, getName()); + auto exec = + skills::SkillExecutionID::FromIce(id, skills::ProviderID{.providerName = getName()}); res.success = this->plugin->abortSkillAsync(exec); return res; } diff --git a/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp b/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp index 5c20567a2..b9529ee7f 100644 --- a/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp +++ b/source/RobotAPI/libraries/skills/provider/detail/SkillImplementationWrapper.cpp @@ -9,7 +9,7 @@ namespace armarx const skills::SkillExecutionID& execId, const aron::data::DictPtr& initial_parameters, const skills::callback::dti::SkillProviderCallbackInterfacePrx& callbackInterface) : - factory(fac), statusUpdate(execId, initial_parameters, callbackInterface) + factory(fac), statusUpdate{{execId, initial_parameters, callbackInterface}} { } @@ -134,9 +134,10 @@ namespace armarx updateStatus(SkillStatus::Aborted, createErrorMessageData(message)); std::unique_lock l(skillStatusesMutex); - auto terminated = TerminatedSkillStatusUpdate(statusUpdate.executionId, - statusUpdate.parameters, - statusUpdate.callbackInterface); + auto terminated = TerminatedSkillStatusUpdate{ + {.executionId = statusUpdate.executionId, + .parameters = statusUpdate.parameters, + .callbackInterface = statusUpdate.callbackInterface}}; terminated.status = TerminatedSkillStatus::Aborted; return terminated; }; @@ -147,9 +148,10 @@ namespace armarx updateStatus(SkillStatus::Failed, createErrorMessageData(message)); std::unique_lock l(skillStatusesMutex); - auto terminated = TerminatedSkillStatusUpdate(statusUpdate.executionId, - statusUpdate.parameters, - statusUpdate.callbackInterface); + auto terminated = TerminatedSkillStatusUpdate{ + {.executionId = statusUpdate.executionId, + .parameters = statusUpdate.parameters, + .callbackInterface = statusUpdate.callbackInterface}}; terminated.status = TerminatedSkillStatus::Failed; return terminated; }; @@ -334,9 +336,10 @@ namespace armarx // return result of main method std::unique_lock l(skillStatusesMutex); - TerminatedSkillStatusUpdate ret(statusUpdate.executionId, - statusUpdate.parameters, - statusUpdate.callbackInterface); + TerminatedSkillStatusUpdate ret{ + {.executionId = statusUpdate.executionId, + .parameters = statusUpdate.parameters, + .callbackInterface = statusUpdate.callbackInterface}}; ret.result = mainRet.data; ret.status = TerminatedSkillStatus::Succeeded; return ret; -- GitLab