Skip to content
Snippets Groups Projects
ChainingAsync.cpp 1.14 KiB
Newer Older
#include "ChainingAsync.h"

namespace armarx::skills::provider
{

    ChainingAsyncSkill::ChainingAsyncSkill() : SimpleSkill(GetSkillDescription())
    {
    }

    SkillDescription
    ChainingAsyncSkill::GetSkillDescription()
    {
        return SkillDescription{.skillId = armarx::skills::SkillID{.skillName = "ChainingAsync"},
                                .description =
                                    "This skill calls the Timeout skill several times async.",
                                .timeout = armarx::core::time::Duration::MilliSeconds(5000)};
    }

    Skill::MainResult
    ChainingAsyncSkill::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;
            callSubskillAsync(prx); // Call the Timeout skill
        }

        this->throwIfSkillShouldTerminate();

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