diff --git a/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.cpp b/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.cpp index 986aab1bc9be867aa918c14e4471ac9fe3e7cf3f..599126041d81ffecd9485285a785acd667cc1e1a 100644 --- a/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.cpp +++ b/source/RobotAPI/libraries/skills/core/SkillStatusUpdate.cpp @@ -315,6 +315,16 @@ namespace armarx return ret; } + template <class BoT, class DtoT> + static void + setResultFromIce(BoT& bo, const DtoT& dto) + { + if (dto.result) + { + bo.result = aron::make_dict(dto.result); + } + } + TerminatedSkillStatusUpdate TerminatedSkillStatusUpdate::FromIce(const manager::dto::SkillStatusUpdate& update) { @@ -323,6 +333,7 @@ namespace armarx .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters), .callbackInterface = update.callbackInterface}}; skills::fromIce(update.status, ret.status); + setResultFromIce(ret, update); return ret; } @@ -335,17 +346,20 @@ namespace armarx .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters), .callbackInterface = update.callbackInterface}}; skills::fromIce(update.status, ret.status); + setResultFromIce(ret, update); return ret; } SkillStatusUpdate SkillStatusUpdate::FromIce(const manager::dto::SkillStatusUpdate& update) { - SkillStatusUpdate ret{ - {.executionId = skills::SkillExecutionID::FromIce(update.executionId), - .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters), - .callbackInterface = 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); + setResultFromIce(ret, update); return ret; } @@ -353,11 +367,13 @@ namespace armarx SkillStatusUpdate::FromIce(const provider::dto::SkillStatusUpdate& update, const std::optional<skills::ProviderID>& providerId) { - SkillStatusUpdate ret{ - {.executionId = skills::SkillExecutionID::FromIce(update.executionId, providerId), - .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters), - .callbackInterface = 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); + setResultFromIce(ret, update); return ret; } @@ -369,6 +385,7 @@ namespace armarx .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters), .callbackInterface = update.callbackInterface}}; skills::fromIce(update.status, ret.status); + setResultFromIce(ret, update); return ret; } @@ -382,7 +399,9 @@ namespace armarx .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters), .callbackInterface = update.callbackInterface}}; skills::fromIce(update.status, ret.status); + setResultFromIce(ret, update); return ret; } + } // namespace skills } // namespace armarx