Sleep.cpp
Go to the documentation of this file.
1#include "Sleep.h"
2
3#include <chrono>
4#include <thread>
5
7
9{
11 SimpleSpecializedSkill<skills::Example::SleepAcceptedType>(GetSkillDescription())
12 {
13 }
14
17 {
18 armarx::skills::Example::SleepAcceptedType root_profile_params;
19 root_profile_params.Timeout_ms = 5000;
20
21 return SkillDescription{
22 .skillId = skills::SkillID{.skillName = "Sleep"},
23 .description =
24 "This skill exits after the provided time (or five minutes, whichever is lower).",
25 .rootProfileDefaults = root_profile_params.toAron(),
27 .parametersType =
28 armarx::skills::Example::SleepAcceptedType::SleepAcceptedType::ToAronType()};
29 }
30
31 void
33 {
34 aborted = true;
35 }
36
38 Sleep::main(const SpecializedMainInput& in)
39 {
40 timeout = armarx::Duration::MilliSeconds(in.parameters.Timeout_ms);
41 auto start = armarx::DateTime::Now();
42 for (;;) // forever
43 {
44 if (aborted)
45 {
46 ARMARX_INFO << "Skill has been woken up by abort.";
48 }
49
50 // check if the time is over
51 auto now = armarx::DateTime::Now();
52 auto diff = now - start;
53 if (diff >= timeout)
54 {
55 ARMARX_INFO << "Skill has woken up by timeout.";
57 }
58 else
59 {
60 std::this_thread::sleep_for(std::chrono::milliseconds(100));
61 }
62 }
63
64 return {TerminatedSkillStatus::Succeeded, in.parameters.toAron()};
65 }
66
67
68} // namespace armarx::skills::provider
static DateTime Now()
Definition DateTime.cpp:51
static Duration MilliSeconds(std::int64_t milliSeconds)
Constructs a duration in milliseconds.
Definition Duration.cpp:48
static Duration Minutes(std::int64_t minutes)
Constructs a duration in minutes.
Definition Duration.cpp:96
static MainResult MakeSucceededResult(aron::data::DictPtr data=nullptr)
Definition Skill.cpp:413
static MainResult MakeAbortedResult(aron::data::DictPtr data=nullptr)
Definition Skill.cpp:431
virtual MainResult main()
Override this method with the actual implementation.
Definition Skill.cpp:542
void onStopRequested() override
Definition Sleep.cpp:32
static SkillDescription GetSkillDescription()
Definition Sleep.cpp:16
#define ARMARX_INFO
The normal logging level.
Definition Logging.h:181
This file is part of ArmarX.
A result struct for th main method of a skill.
Definition Skill.h:62