SkillStatusUpdate.cpp
Go to the documentation of this file.
1 #include "SkillStatusUpdate.h"
2 
4 
5 namespace armarx
6 {
7  namespace skills
8  {
11  {
12  switch (d)
13  {
15  return SkillStatus::Running;
17  return SkillStatus::Failed;
21  return SkillStatus::Aborted;
22  }
23  throw error::SkillException(__PRETTY_FUNCTION__, "Should not happen!");
24  }
25 
28  {
29  switch (d)
30  {
32  return SkillStatus::Failed;
36  return SkillStatus::Aborted;
37  }
38  throw error::SkillException(__PRETTY_FUNCTION__, "Should not happen!");
39  }
40 
43  {
44  // if both are equal
45  if (t1 == t2)
46  {
47  return t1;
48  }
49 
50  // if one is failed (most unspecific result)
52  {
54  }
55 
56  // else one must be aborted and the other one must be succeeded
58  }
59 
63  {
64  // if both are equal
65  if (t1 == t2)
66  {
67  return t1;
68  }
69 
70  // if one is failed (most unspecific result)
73  {
75  }
76 
77  // if none is failed and one is aborted (second most unspecific result)
80  {
82  }
83 
84  // else one must be running and the other one must be succeeded
86  }
87 
88  void
89  toIce(core::dto::Execution::Status& ret, const SkillStatus& status)
90  {
91  switch (status)
92  {
94  ret = core::dto::Execution::Status::Constructing;
95  return;
97  ret = core::dto::Execution::Status::Initializing;
98  return;
100  ret = core::dto::Execution::Status::Preparing;
101  return;
104  return;
105  case SkillStatus::Failed:
106  ret = core::dto::Execution::Status::Failed;
107  return;
109  ret = core::dto::Execution::Status::Succeeded;
110  return;
112  ret = core::dto::Execution::Status::Aborted;
113  return;
114  }
115  throw error::SkillException(__PRETTY_FUNCTION__, "Should not happen!");
116  }
117 
118  void
119  toIce(core::dto::Execution::Status& ret, const ActiveOrTerminatedSkillStatus& status)
120  {
121  switch (status)
122  {
125  return;
127  ret = core::dto::Execution::Status::Failed;
128  return;
130  ret = core::dto::Execution::Status::Succeeded;
131  return;
133  ret = core::dto::Execution::Status::Aborted;
134  return;
135  }
136  throw error::SkillException(__PRETTY_FUNCTION__, "Should not happen!");
137  }
138 
139  void
140  toIce(core::dto::Execution::Status& ret, const TerminatedSkillStatus& status)
141  {
142  switch (status)
143  {
145  ret = core::dto::Execution::Status::Failed;
146  return;
148  ret = core::dto::Execution::Status::Succeeded;
149  return;
151  ret = core::dto::Execution::Status::Aborted;
152  return;
153  }
154  throw error::SkillException(__PRETTY_FUNCTION__, "Should not happen!");
155  }
156 
157  void
158  fromIce(const core::dto::Execution::Status& status, TerminatedSkillStatus& ret)
159  {
160  switch (status)
161  {
162  case core::dto::Execution::Status::Constructing:
163  [[fallthrough]];
164  case core::dto::Execution::Status::Initializing:
165  [[fallthrough]];
166  case core::dto::Execution::Status::Preparing:
167  [[fallthrough]];
169  break;
170  case core::dto::Execution::Status::Failed:
172  return;
173  case core::dto::Execution::Status::Succeeded:
175  return;
176  case core::dto::Execution::Status::Aborted:
178  return;
179  }
180  throw error::SkillException(
181  __PRETTY_FUNCTION__,
182  "You entered an invalid execution status type to convert to a terminating status.");
183  }
184 
185  void
186  fromIce(const core::dto::Execution::Status& status, ActiveOrTerminatedSkillStatus& ret)
187  {
188  switch (status)
189  {
190  case core::dto::Execution::Status::Constructing:
191  [[fallthrough]];
192  case core::dto::Execution::Status::Initializing:
193  [[fallthrough]];
194  case core::dto::Execution::Status::Preparing:
195  break;
198  return;
199  case core::dto::Execution::Status::Failed:
201  return;
202  case core::dto::Execution::Status::Succeeded:
204  return;
205  case core::dto::Execution::Status::Aborted:
207  return;
208  }
209  throw error::SkillException(
210  __PRETTY_FUNCTION__,
211  "You entered an invalid execution status type to convert to a terminating status.");
212  }
213 
214  void
215  fromIce(const core::dto::Execution::Status& status, SkillStatus& ret)
216  {
217  switch (status)
218  {
219  case core::dto::Execution::Status::Constructing:
221  return;
222  case core::dto::Execution::Status::Initializing:
224  return;
225  case core::dto::Execution::Status::Preparing:
227  return;
230  return;
231  case core::dto::Execution::Status::Failed:
233  return;
234  case core::dto::Execution::Status::Succeeded:
236  return;
237  case core::dto::Execution::Status::Aborted:
239  return;
240  }
241  throw error::SkillException(__PRETTY_FUNCTION__, "Should not happen!");
242  }
243 
244  manager::dto::SkillStatusUpdate
246  {
247  manager::dto::SkillStatusUpdate ret;
248  ret.executionId.skillId = executionId.skillId.toManagerIce();
249  ret.executionId.executorName = executionId.executorName;
250  armarx::core::time::toIce(ret.executionId.executionStartedTime,
253  ret.callbackInterface = callbackInterface;
255  return ret;
256  }
257 
258  provider::dto::SkillStatusUpdate
260  {
261  provider::dto::SkillStatusUpdate ret;
262  ret.executionId.skillId = executionId.skillId.toProviderIce();
263  ret.executionId.executorName = executionId.executorName;
264  armarx::core::time::toIce(ret.executionId.executionStartedTime,
267  ret.callbackInterface = callbackInterface;
269  return ret;
270  }
271 
272  manager::dto::SkillStatusUpdate
274  {
275  manager::dto::SkillStatusUpdate ret = SkillStatusUpdateBase::toManagerIce();
276  skills::toIce(ret.status, status);
277  return ret;
278  }
279 
280  provider::dto::SkillStatusUpdate
282  {
283  provider::dto::SkillStatusUpdate ret = SkillStatusUpdateBase::toProviderIce();
284  skills::toIce(ret.status, status);
285  return ret;
286  }
287 
288  manager::dto::SkillStatusUpdate
290  {
291  manager::dto::SkillStatusUpdate ret = SkillStatusUpdateBase::toManagerIce();
292  skills::toIce(ret.status, status);
293  return ret;
294  }
295 
296  provider::dto::SkillStatusUpdate
298  {
299  provider::dto::SkillStatusUpdate ret = SkillStatusUpdateBase::toProviderIce();
300  skills::toIce(ret.status, status);
301  return ret;
302  }
303 
304  manager::dto::SkillStatusUpdate
306  {
307  manager::dto::SkillStatusUpdate ret = SkillStatusUpdateBase::toManagerIce();
308  skills::toIce(ret.status, status);
309  return ret;
310  }
311 
312  provider::dto::SkillStatusUpdate
314  {
315  provider::dto::SkillStatusUpdate ret = SkillStatusUpdateBase::toProviderIce();
316  skills::toIce(ret.status, status);
317  return ret;
318  }
319 
320  template <class BoT, class DtoT>
321  static void
322  setResultFromIce(BoT& bo, const DtoT& dto)
323  {
324  if (dto.result)
325  {
326  bo.result = aron::make_dict(dto.result);
327  }
328  }
329 
330  TerminatedSkillStatusUpdate
331  TerminatedSkillStatusUpdate::FromIce(const manager::dto::SkillStatusUpdate& update)
332  {
334  {.executionId = skills::SkillExecutionID::FromIce(update.executionId),
335  .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
336  .callbackInterface = update.callbackInterface}};
337  skills::fromIce(update.status, ret.status);
338  setResultFromIce(ret, update);
339  return ret;
340  }
341 
343  TerminatedSkillStatusUpdate::FromIce(const provider::dto::SkillStatusUpdate& update,
344  const std::optional<skills::ProviderID>& providerId)
345  {
347  {.executionId = skills::SkillExecutionID::FromIce(update.executionId, providerId),
348  .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
349  .callbackInterface = update.callbackInterface}};
350  skills::fromIce(update.status, ret.status);
351  setResultFromIce(ret, update);
352  return ret;
353  }
354 
356  SkillStatusUpdate::FromIce(const manager::dto::SkillStatusUpdate& update)
357  {
359  .executionId = skills::SkillExecutionID::FromIce(update.executionId),
360  .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
361  .callbackInterface = update.callbackInterface,
362  }};
363  skills::fromIce(update.status, ret.status);
364  setResultFromIce(ret, update);
365  return ret;
366  }
367 
369  SkillStatusUpdate::FromIce(const provider::dto::SkillStatusUpdate& update,
370  const std::optional<skills::ProviderID>& providerId)
371  {
373  {.executionId = skills::SkillExecutionID::FromIce(update.executionId, providerId),
374  .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
375  .callbackInterface = update.callbackInterface,
377  skills::fromIce(update.status, ret.status);
378  setResultFromIce(ret, update);
379  return ret;
380  }
381 
383  ActiveOrTerminatedSkillStatusUpdate::FromIce(const manager::dto::SkillStatusUpdate& update)
384  {
386  {.executionId = skills::SkillExecutionID::FromIce(update.executionId),
387  .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
388  .callbackInterface = update.callbackInterface}};
389  skills::fromIce(update.status, ret.status);
390  setResultFromIce(ret, update);
391  return ret;
392  }
393 
396  const provider::dto::SkillStatusUpdate& update,
397  const std::optional<skills::ProviderID>& providerId)
398  {
400  {.executionId = skills::SkillExecutionID::FromIce(update.executionId, providerId),
401  .parameters = armarx::aron::data::Dict::FromAronDictDTO(update.parameters),
402  .callbackInterface = update.callbackInterface}};
403  skills::fromIce(update.status, ret.status);
404  setResultFromIce(ret, update);
405  return ret;
406  }
407 
408  bool
410  {
411  if (!hasBeenConstructed() and o.hasBeenConstructed())
412  {
413  return true;
414  }
415  if (!hasBeenInitialized() and o.hasBeenInitialized())
416  {
417  return true;
418  }
419  if (!hasBeenPrepared() and o.hasBeenPrepared())
420  {
421  return true;
422  }
423  if (!hasBeenRunning() and o.hasBeenRunning())
424  {
425  return true;
426  }
427  if (!hasBeenTerminated() and o.hasBeenTerminated())
428  {
429  return true;
430  }
431  return false;
432  }
433 
434  bool
436  {
437  if (status == o.status)
438  {
439  return true;
440  }
441  return *this < o;
442  }
443 
444  bool
446  {
448  }
449 
450  bool
452  {
454  }
455 
456  bool
458  {
460  }
461 
462  bool
464  {
466  }
467 
468  bool
470  {
473  }
474 
475  bool
477  {
478  return status == SkillStatus::Succeeded;
479  }
480 
481  bool
483  {
487  }
488 
489  bool
491  {
493  }
494 
495  bool
497  {
498  return true;
499  }
500 
501  bool
503  {
505  }
506  } // namespace skills
507 } // namespace armarx
armarx::skills::SkillStatusUpdate::operator<
bool operator<(const SkillStatusUpdate &o) const
Definition: SkillStatusUpdate.cpp:409
armarx::skills::TerminatedSkillStatus
TerminatedSkillStatus
Definition: SkillStatusUpdate.h:34
armarx::skills::TerminatedSkillStatusUpdate::FromIce
static TerminatedSkillStatusUpdate FromIce(const provider::dto::SkillStatusUpdate &update, const std::optional< skills::ProviderID > &providerId=std::nullopt)
Definition: SkillStatusUpdate.cpp:343
armarx::aron::ret
ReaderT::InputType T & ret
Definition: rw.h:13
armarx::skills::SkillStatusUpdateBase::toManagerIce
manager::dto::SkillStatusUpdate toManagerIce() const
Definition: SkillStatusUpdate.cpp:245
armarx::skills::TerminatedSkillStatus::Succeeded
@ Succeeded
skills
This file is part of ArmarX.
armarx::skills::SkillStatusUpdate::toManagerIce
manager::dto::SkillStatusUpdate toManagerIce() const
Definition: SkillStatusUpdate.cpp:289
Exception.h
armarx::skills::SkillExecutionID::executorName
std::string executorName
Definition: SkillExecutionID.h:18
armarx::skills::TerminatedSkillStatus::Aborted
@ Aborted
SkillStatusUpdate.h
armarx::skills::SkillStatus::Aborted
@ Aborted
armarx::skills::SkillStatusUpdate::FromIce
static SkillStatusUpdate FromIce(const provider::dto::SkillStatusUpdate &update, const std::optional< skills::ProviderID > &providerId=std::nullopt)
Definition: SkillStatusUpdate.cpp:369
armarx::skills::ActiveOrTerminatedSkillStatus::Succeeded
@ Succeeded
armarx::skills::ActiveOrTerminatedSkillStatus::Failed
@ Failed
armarx::aron::make_dict
aron::data::DictPtr make_dict(_Args &&... args)
Definition: Dict.h:107
armarx::skills::SkillStatusUpdate::hasBeenRunning
bool hasBeenRunning() const
Definition: SkillStatusUpdate.cpp:463
KITProsthesis::ProsthesisState::Running
@ Running
Definition: KITProstheticHandInterface.ice:43
armarx::core::time::toIce
void toIce(dto::ClockType::ClockTypeEnum &dto, const ClockType &bo)
Definition: ice_conversions.cpp:31
armarx::skills::mergeSkillStatuseses
TerminatedSkillStatus mergeSkillStatuseses(const TerminatedSkillStatus t1, const TerminatedSkillStatus t2)
Definition: SkillStatusUpdate.cpp:42
armarx::skills::TerminatedSkillStatusUpdate::hasBeenSucceeded
bool hasBeenSucceeded() const
Definition: SkillStatusUpdate.cpp:502
armarx::skills::SkillStatusUpdate::status
SkillStatus status
Definition: SkillStatusUpdate.h:118
armarx::skills::TerminatedSkillStatusUpdate::toManagerIce
manager::dto::SkillStatusUpdate toManagerIce() const
Definition: SkillStatusUpdate.cpp:273
armarx::skills::SkillExecutionID::executionStartedTime
armarx::core::time::DateTime executionStartedTime
Definition: SkillExecutionID.h:19
armarx::skills::SkillStatusUpdateBase::callbackInterface
callback::dti::SkillProviderCallbackInterfacePrx callbackInterface
Definition: SkillStatusUpdate.h:63
armarx::skills::SkillStatusUpdateBase::executionId
SkillExecutionID executionId
Definition: SkillStatusUpdate.h:61
armarx::skills::SkillID::toManagerIce
manager::dto::SkillID toManagerIce() const
Definition: SkillID.cpp:55
armarx::skills::SkillStatusUpdateBase::result
aron::data::DictPtr result
Definition: SkillStatusUpdate.h:66
armarx::aron::data::Dict::FromAronDictDTO
static PointerType FromAronDictDTO(const data::dto::DictPtr &aron)
Definition: Dict.cpp:130
armarx::skills::SkillStatusUpdate::operator<=
bool operator<=(const SkillStatusUpdate &o) const
Definition: SkillStatusUpdate.cpp:435
armarx::skills::ActiveOrTerminatedSkillStatusUpdate::FromIce
static ActiveOrTerminatedSkillStatusUpdate FromIce(const provider::dto::SkillStatusUpdate &update, const std::optional< skills::ProviderID > &providerId=std::nullopt)
Definition: SkillStatusUpdate.cpp:395
armarx::skills::SkillStatusUpdate::hasBeenSucceeded
bool hasBeenSucceeded() const
Definition: SkillStatusUpdate.cpp:476
armarx::skills::ActiveOrTerminatedSkillStatusUpdate::toProviderIce
provider::dto::SkillStatusUpdate toProviderIce() const
Definition: SkillStatusUpdate.cpp:313
armarx::skills::ActiveOrTerminatedSkillStatus
ActiveOrTerminatedSkillStatus
Definition: SkillStatusUpdate.h:26
armarx::status
status
Definition: FiniteStateMachine.h:244
armarx::skills::SkillStatusUpdate
Definition: SkillStatusUpdate.h:116
armarx::skills::TerminatedSkillStatusUpdate::toProviderIce
provider::dto::SkillStatusUpdate toProviderIce() const
Definition: SkillStatusUpdate.cpp:281
armarx::skills::SkillStatusUpdate::toProviderIce
provider::dto::SkillStatusUpdate toProviderIce() const
Definition: SkillStatusUpdate.cpp:297
armarx::skills::ActiveOrTerminatedSkillStatusUpdate::hasBeenTerminated
bool hasBeenTerminated() const
Definition: SkillStatusUpdate.cpp:482
armarx::skills::ActiveOrTerminatedSkillStatusUpdate::hasBeenSucceeded
bool hasBeenSucceeded() const
Definition: SkillStatusUpdate.cpp:490
armarx::skills::SkillStatus::Preparing
@ Preparing
armarx::skills::ActiveOrTerminatedSkillStatus::Aborted
@ Aborted
armarx::skills::error::SkillException
A base class for skill exceptions.
Definition: Exception.h:34
armarx::skills::toIce
void toIce(core::dto::Execution::Status &ret, const SkillStatus &status)
Definition: SkillStatusUpdate.cpp:89
armarx::skills::SkillStatusUpdate::hasBeenPrepared
bool hasBeenPrepared() const
Definition: SkillStatusUpdate.cpp:457
armarx::aron::data::Dict::ToAronDictDTO
static data::dto::DictPtr ToAronDictDTO(const PointerType &navigator)
Definition: Dict.cpp:140
armarx::skills::SkillStatusUpdate::hasBeenConstructed
bool hasBeenConstructed() const
Definition: SkillStatusUpdate.cpp:445
armarx::armem::server::ltm::util::mongodb::detail::update
bool update(mongocxx::collection &coll, const nlohmann::json &query, const nlohmann::json &update)
Definition: mongodb.cpp:68
armarx::skills::ActiveOrTerminatedSkillStatus::Running
@ Running
armarx::skills::SkillStatusUpdateBase::toProviderIce
provider::dto::SkillStatusUpdate toProviderIce() const
Definition: SkillStatusUpdate.cpp:259
armarx::skills::TerminatedSkillStatusUpdate
Definition: SkillStatusUpdate.h:74
armarx::skills::TerminatedSkillStatusUpdate::hasBeenTerminated
bool hasBeenTerminated() const
Definition: SkillStatusUpdate.cpp:496
armarx::skills::SkillStatus::Initializing
@ Initializing
armarx::skills::TerminatedSkillStatus::Failed
@ Failed
armarx::skills::ActiveOrTerminatedSkillStatusUpdate::toManagerIce
manager::dto::SkillStatusUpdate toManagerIce() const
Definition: SkillStatusUpdate.cpp:305
armarx::skills::SkillStatusUpdateBase::parameters
aron::data::DictPtr parameters
Definition: SkillStatusUpdate.h:62
armarx::skills::SkillExecutionID::skillId
SkillID skillId
Definition: SkillExecutionID.h:17
armarx::skills::SkillExecutionID::FromIce
static SkillExecutionID FromIce(const skills::manager::dto::SkillExecutionID &)
Definition: SkillExecutionID.cpp:31
armarx::skills::SkillStatus::Running
@ Running
armarx::skills::SkillID::toProviderIce
provider::dto::SkillID toProviderIce() const
Definition: SkillID.cpp:62
armarx::skills::toSkillStatus
SkillStatus toSkillStatus(const ActiveOrTerminatedSkillStatus &d)
Definition: SkillStatusUpdate.cpp:10
armarx::skills::ActiveOrTerminatedSkillStatusUpdate
Definition: SkillStatusUpdate.h:95
armarx::skills::fromIce
void fromIce(const core::dto::Execution::Status &status, TerminatedSkillStatus &ret)
Definition: SkillStatusUpdate.cpp:158
armarx::skills::SkillStatus::Constructing
@ Constructing
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
armarx::skills::SkillStatusUpdate::hasBeenTerminated
bool hasBeenTerminated() const
Definition: SkillStatusUpdate.cpp:469
armarx::aron::bo
const std::optional< BoT > & bo
Definition: aron_conversions.h:174
armarx::skills::SkillStatus
SkillStatus
Definition: SkillStatusUpdate.h:15
armarx::skills::SkillStatus::Succeeded
@ Succeeded
armarx::skills::SkillStatusUpdate::hasBeenInitialized
bool hasBeenInitialized() const
Definition: SkillStatusUpdate.cpp:451
armarx::skills::SkillStatus::Failed
@ Failed