Skip to content
Snippets Groups Projects
Chaining.cpp 1.24 KiB
Newer Older


#include "Chaining.h"

namespace armarx::skills::provider
{

    ChainingSkill::ChainingSkill() : SimpleSkill(GetSkillDescription())
    {
    }

    SkillDescription
    ChainingSkill::GetSkillDescription()
    {
        return SkillDescription{.skillId = armarx::skills::SkillID{.skillName = "Chaining"},
                                .description =
                                    "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)};
    }

    Skill::MainResult
    ChainingSkill::main(const MainInput& in)
    {
        SkillProxy prx(
            manager,
            skills::SkillID{.providerId = *getSkillId().providerId, .skillName = "Timeout"});
        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
        }

        this->throwIfSkillShouldTerminate();

        return {TerminatedSkillStatus::Succeeded, nullptr};
    }
} // namespace armarx::skills::provider