Newer
Older

Fabian Tërnava
committed
#include "Chaining.h"
namespace armarx::skills::provider
{
ChainingSkill::ChainingSkill() : SimpleSkill(GetSkillDescription())
{
}
SkillDescription
ChainingSkill::GetSkillDescription()
{
return SkillDescription{.skillId = armarx::skills::SkillID{.skillName = "Chaining"},
"This skill calls the Timeout skill several times. At some point the "
"execution is aborted due to a timeout of this skill.",
.timeout = armarx::core::time::Duration::MilliSeconds(10000)};

Fabian Tërnava
committed
}
Skill::MainResult
ChainingSkill::main(const MainInput& in)
{
SkillProxy prx(
manager,
skills::SkillID{.providerId = *getSkillId().providerId, .skillName = "Timeout"});

Fabian Tërnava
committed
for (int i = 0; i < 25; i++)
{
this->throwIfSkillShouldTerminate();
ARMARX_INFO << "Call subskill number " << i;
callSubskill(prx); // Call the Timeout skill and wait for it to finish
}

Fabian Tërnava
committed
this->throwIfSkillShouldTerminate();
return {TerminatedSkillStatus::Succeeded, nullptr};
}
} // namespace armarx::skills::provider