Skip to content
Snippets Groups Projects

Add convenience functions for calling subskills

Merged Rainer Kartmann requested to merge feature/subskill-convenience-functions into master
2 files
+ 174
12
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -19,10 +19,22 @@ namespace armarx
}
std::optional<TerminatedSkillStatusUpdate>
Skill::callSubskill(const SkillProxy& prx, const aron::data::DictPtr& params)
Skill::callSubskill(const SkillProxy& proxy)
{
auto eid = callSubskillAsync(prx, params);
auto ret = prx.join(eid);
return callSubskill(proxy, proxy.getRootProfileParameters());
}
std::optional<TerminatedSkillStatusUpdate>
Skill::callSubskill(const SkillProxy& proxy, const aron::data::DictPtr& parameters)
{
auto executionId = callSubskillAsync(proxy, parameters);
auto ret = proxy.join(executionId);
// While the sub skill was running, our skill might also have been aborted.
// In this case, the correct behavour would be aborting ourselves.
// The caller of callSubskill() can catch the thrown error::SkillAbortedException
// if necessary.
throwIfSkillShouldTerminate();
return ret;
}
@@ -37,6 +49,35 @@ namespace armarx
return eid;
}
std::optional<TerminatedSkillStatusUpdate>
Skill::callSubskill(const SkillID& skillId)
{
return callSubskill(SkillProxy(manager, skillId));
}
std::optional<TerminatedSkillStatusUpdate>
Skill::callSubskill(const SkillID& skillId, const aron::data::DictPtr& parameters)
{
return callSubskill(SkillProxy(manager, skillId), parameters);
}
std::optional<TerminatedSkillStatusUpdate>
Skill::callSubskill(const SkillID& skillId,
std::function<void(aron::data::DictPtr&)> parametersFunction)
{
SkillProxy proxy(manager, skillId);
aron::data::DictPtr parameters = proxy.getRootProfileParameters();
if (not parameters)
{
parameters = armarx::aron::make_dict();
}
parametersFunction(parameters);
return callSubskill(proxy, parameters);
}
void
Skill::updateParameters(const aron::data::DictPtr& d)
{
Loading