SkillManagerComponentPlugin.cpp
Go to the documentation of this file.
2 
6 
10 
11 namespace armarx::plugins
12 {
13  void
15  {
16  }
17 
18  void
20  {
21  auto& p = parent<SkillManagerComponentPluginUser>();
22  p.getProxy(myPrx, -1);
23  }
24 
25  void
27  {
28  }
29 
32  {
33  // NON LOCKING! WE ASSERT THAT THE CALLER HOLDS LOCK
34  for (const auto& [providerName, providerPrx] : skillProviderMap)
35  {
36  auto allSkills = providerPrx->getSkillDescriptions();
37  for (const auto& [currentSkillID, skillDesc] : allSkills)
38  {
39  if (currentSkillID.skillName == skillId.skillName)
40  {
41  return {providerName};
42  }
43  }
44  }
45  return {"INVALID PROVIDER NAME"};
46  }
47 
48  void
50  {
51  std::scoped_lock l(skillProviderMapMutex);
52  if (skillProviderMap.find(providerInfo.providerId) == skillProviderMap.end())
53  {
54  ARMARX_INFO << "Adding a provider with name '" << providerInfo.providerId.providerName
55  << "'.";
56  skillProviderMap.insert({providerInfo.providerId, providerInfo.providerInterface});
57  }
58  else
59  {
60  ARMARX_INFO << "Trying to add a provider with name '"
61  << providerInfo.providerId.providerName
62  << "' but the provider already exists. "
63  << "Overwriting the old provider info.";
64  skillProviderMap[providerInfo.providerId] = providerInfo.providerInterface;
65  }
66  }
67 
68  void
70  {
71  std::scoped_lock l(skillProviderMapMutex);
72  if (auto it = skillProviderMap.find(providerId); it != skillProviderMap.end())
73  {
74  ARMARX_INFO << "Removing a provider with name '" << providerId.providerName << "'.";
75  skillProviderMap.erase(it);
76  }
77  else
78  {
79  ARMARX_INFO << "Trying to remove a provider with name '" << providerId.providerName
80  << "' but it couldn't be found.";
81  }
82  }
83 
86  {
87  ARMARX_CHECK(executionRequest.skillId.isFullySpecified())
88  << "Got: " << executionRequest.skillId.toString();
89 
90  std::unique_lock l(skillProviderMapMutex);
91 
92  skills::ProviderID provderId(*executionRequest.skillId.providerId);
93 
94  // TODO: Really support regexes!
95  if (executionRequest.skillId.providerId->providerName == "*")
96  {
97  provderId = getFirstProviderNameThatHasSkill(executionRequest.skillId);
98  }
99 
100 
101  if (auto it = skillProviderMap.find(provderId); it != skillProviderMap.end())
102  {
103  const auto& provider = it->second;
104 
105  if (!provider)
106  {
107  ARMARX_WARNING << __PRETTY_FUNCTION__ << ": Found disconnected skill provider '"
108  << provderId << "'. Removing it from skills.";
109  skillProviderMap.erase(it);
110 
112  __PRETTY_FUNCTION__,
113  "Skill execution failed. Could not execute a skill of provider '" +
114  provderId.toString() + "' because the provider does not exist.");
115  }
116 
117  try
118  {
119  skills::SkillExecutionRequest provider_executionRequest{
120  .skillId = executionRequest.skillId,
121  .executorName = executionRequest.executorName,
122  .parameters = executionRequest.parameters,
123  .callbackInterface = myPrx};
124 
125  auto async =
126  provider->begin_executeSkill(provider_executionRequest.toProviderIce());
127  l.unlock(); // allow parallel e.g. stopping
128  auto provider_statusUpdate_ice = provider->end_executeSkill(async);
129 
130  // convert to manager view
131  auto statusUpdate =
132  skills::SkillStatusUpdate::FromIce(provider_statusUpdate_ice, provderId);
133  return statusUpdate;
134  }
135  catch (...)
136  {
137  ARMARX_WARNING << __PRETTY_FUNCTION__
138  << ": Found disconnected or buggy skill provider '" << provderId
139  << "' during execution. Removing it from skills.";
140  skillProviderMap.erase(it);
141 
143  __PRETTY_FUNCTION__,
144  "Skill execution failed. Could not execute a skill of provider '" +
145  provderId.toString() + "' because the provider does not exist.");
146  }
147  }
148  else
149  {
151  __PRETTY_FUNCTION__,
152  "Skill execution failed. Could not execute a skill of provider '" +
153  provderId.toString() + "' because the provider does not exist.");
154  }
155  }
156 
159  const skills::SkillExecutionRequest& executionRequest)
160  {
161  ARMARX_CHECK(executionRequest.skillId.isFullySpecified())
162  << "Got: " << executionRequest.skillId.toString();
163 
164  std::unique_lock l(skillProviderMapMutex);
165 
166  skills::ProviderID provderId(*executionRequest.skillId.providerId);
167 
168  // TODO: Really support regexes!
169  if (executionRequest.skillId.providerId->providerName == "*")
170  {
171  provderId = getFirstProviderNameThatHasSkill(executionRequest.skillId);
172  }
173 
174 
175  if (auto it = skillProviderMap.find(provderId); it != skillProviderMap.end())
176  {
177  const auto& provider = it->second;
178 
179  if (!provider)
180  {
181  ARMARX_WARNING << __PRETTY_FUNCTION__ << ": Found disconnected skill provider '"
182  << provderId << "'. Removing it from skills.";
183  skillProviderMap.erase(it);
184 
186  __PRETTY_FUNCTION__,
187  "Skill execution failed. Could not execute a skill of provider '" +
188  provderId.toString() + "' because the provider does not exist.");
189  }
190 
191  try
192  {
193  skills::SkillExecutionRequest provider_executionRequest{
194  .skillId = executionRequest.skillId,
195  .executorName = executionRequest.executorName,
196  .parameters = executionRequest.parameters,
197  .callbackInterface = myPrx};
198 
199  auto async =
200  provider->begin_executeSkillAsync(provider_executionRequest.toProviderIce());
201  l.unlock(); // allow parallel e.g. stopping
202  auto provider_executionID_ice = provider->end_executeSkillAsync(async);
203 
204  // convert to manager view
205  auto executionId =
206  skills::SkillExecutionID::FromIce(provider_executionID_ice, provderId);
207  executionId.skillId.providerId = provderId;
208  return executionId;
209  }
210  catch (...)
211  {
212  ARMARX_WARNING << __PRETTY_FUNCTION__
213  << ": Found disconnected or buggy skill provider '" << provderId
214  << "' during execution. Removing it from skills.";
215  skillProviderMap.erase(it);
216 
218  __PRETTY_FUNCTION__,
219  "Skill execution failed. Could not execute a skill of provider '" +
220  provderId.toString() + "' because the provider does not exist.");
221  }
222  }
223  else
224  {
226  __PRETTY_FUNCTION__,
227  "Skill execution failed. Could not execute a skill of provider '" +
228  provderId.toString() + "' because the provider does not exist.");
229  }
230  }
231 
232  bool
234  const aron::data::DictPtr& data)
235  {
236  ARMARX_CHECK(executionId.skillId.isFullySpecified())
237  << "Got: " << executionId.skillId.toString();
238 
239  std::unique_lock l(skillProviderMapMutex);
240  if (auto it = skillProviderMap.find(*executionId.skillId.providerId);
241  it != skillProviderMap.end())
242  {
243  const auto& providerId = it->first;
244  const auto& provider = it->second;
245 
246  if (!provider)
247  {
248  ARMARX_WARNING << __PRETTY_FUNCTION__ << ": Found disconnected skill provider '"
249  << providerId << "'. Removing it from skills.";
250  skillProviderMap.erase(it);
251  return false;
252  }
253 
254  try
255  {
256  auto async = provider->begin_updateSkillParameters(executionId.toProviderIce(),
257  data->toAronDictDTO());
258  l.unlock(); // allow parallel e.g. stopping
259  auto r = provider->end_updateSkillParameters(async);
260  return r.success;
261  }
262  catch (...)
263  {
264  ARMARX_WARNING << __PRETTY_FUNCTION__ << ": Found buggy skill provider '"
265  << providerId << "'. Removing it from skills on next execute.";
266  return false;
267  }
268  }
269  else
270  {
271  return false;
272  }
273  }
274 
275  bool
277  {
278  ARMARX_CHECK(executionId.skillId.isFullySpecified())
279  << "Got: " << executionId.skillId.toString();
280 
281  std::unique_lock l(skillProviderMapMutex);
282  if (auto it = skillProviderMap.find(*executionId.skillId.providerId);
283  it != skillProviderMap.end())
284  {
285  const auto& providerId = it->first;
286  const auto& provider = it->second;
287 
288  if (!provider)
289  {
290  ARMARX_WARNING << __PRETTY_FUNCTION__ << ": Found disconnected skill provider '"
291  << providerId << "'. Removing it from skills.";
292  skillProviderMap.erase(it);
293  return false;
294  }
295 
296  try
297  {
298  auto async = provider->begin_abortSkill(executionId.toProviderIce());
299  l.unlock(); // allow parallel e.g. stopping
300  auto r = provider->end_abortSkill(async);
301  return r.success;
302  }
303  catch (...)
304  {
305  ARMARX_WARNING << __PRETTY_FUNCTION__ << ": Found buggy skill provider '"
306  << providerId << "'. Removing it from skills on next execute.";
307  return false;
308  }
309  }
310  else
311  {
312  return false;
313  }
314  }
315 
316  bool
318  {
319  ARMARX_CHECK(executionId.skillId.isFullySpecified())
320  << "Got: " << executionId.skillId.toString();
321 
322  std::unique_lock l(skillProviderMapMutex);
323  if (auto it = skillProviderMap.find(*executionId.skillId.providerId);
324  it != skillProviderMap.end())
325  {
326  const auto& providerId = it->first;
327  const auto& provider = it->second;
328 
329  if (!provider)
330  {
331  ARMARX_WARNING << __PRETTY_FUNCTION__ << ": Found disconnected skill provider '"
332  << providerId << "'. Removing it from skills.";
333  skillProviderMap.erase(it);
334  return false;
335  }
336 
337  try
338  {
339  auto async = provider->begin_abortSkill(executionId.toProviderIce());
340  return true;
341  }
342  catch (...)
343  {
344  ARMARX_WARNING << __PRETTY_FUNCTION__ << ": Found buggy skill provider '"
345  << providerId << "'. Removing it from skills on next execute.";
346  return false;
347  }
348  }
349  else
350  {
351  return false;
352  }
353  }
354 
355  std::optional<skills::SkillDescription>
357  {
358  ARMARX_CHECK(skillId.isFullySpecified()) << "Got: " << skillId.toString();
359 
360  std::unique_lock l(skillProviderMapMutex);
361  if (auto it = skillProviderMap.find(*skillId.providerId); it != skillProviderMap.end())
362  {
363  const auto& providerId = it->first;
364  const auto& provider = it->second;
365 
366  if (!provider)
367  {
368  ARMARX_WARNING << __PRETTY_FUNCTION__ << ": Found disconnected skill provider '"
369  << providerId << "'. Removing it from skills.";
370  skillProviderMap.erase(it);
371 
372  throw skills::error::SkillException(__PRETTY_FUNCTION__,
373  "Skill execution failed. Could not query a "
374  "status update of a skill of provider '" +
375  providerId.toString() +
376  "' because the provider does not exist.");
377  }
378 
379  try
380  {
381  auto async = provider->begin_getSkillDescription(skillId.toProviderIce());
382  l.unlock(); // allow parallel e.g. stopping
383  auto provider_desc_ice = provider->end_getSkillDescription(async);
384 
385  if (not provider_desc_ice)
386  {
387  return std::nullopt;
388  }
389 
390  // convert to manager view
391  auto desc =
392  skills::SkillDescription::FromIce(provider_desc_ice.value(), providerId);
393  return desc;
394  }
395  catch (...)
396  {
397  ARMARX_WARNING << __PRETTY_FUNCTION__
398  << ": Found disconnected or buggy skill provider '" << providerId
399  << "' during execution. Removing it from skills.";
400  skillProviderMap.erase(it);
401 
402  throw skills::error::SkillException(__PRETTY_FUNCTION__,
403  "Skill execution failed. Could not query a "
404  "status update of a skill of provider '" +
405  providerId.toString() +
406  "' because the provider does not exist.");
407  }
408  }
409  else
410  {
411  return std::nullopt;
412  }
413  }
414 
415  std::map<skills::SkillID, skills::SkillDescription>
417  {
418  std::map<skills::SkillID, skills::SkillDescription> ret;
419 
420  std::scoped_lock l(skillProviderMapMutex);
421  for (auto it = skillProviderMap.cbegin(); it != skillProviderMap.cend();)
422  {
423  const auto& providerId = it->first;
424  const auto& provider = it->second;
425 
426  if (!provider)
427  {
428  ARMARX_WARNING << __PRETTY_FUNCTION__ << ": Found disconnected skill provider '"
429  << providerId << "'. Removing it from skills.";
430  it = skillProviderMap.erase(it);
431  continue;
432  }
433 
434  try
435  {
436  skills::provider::dto::SkillDescriptionMap m = provider->getSkillDescriptions();
437 
438  for (const auto& [provider_skillId_ice, skillDescription_ice] : m)
439  {
440  ret.insert(
441  {skills::SkillID::FromIce(provider_skillId_ice, providerId),
442  skills::SkillDescription::FromIce(skillDescription_ice, providerId)});
443  }
444 
445  ++it;
446  }
447  catch (...)
448  {
449  ARMARX_WARNING << __PRETTY_FUNCTION__ << ": Found buggy skill provider '"
450  << providerId << "'. Removing it from skills.";
451  it = skillProviderMap.erase(it);
452  }
453  }
454  return ret;
455  }
456 
457  std::optional<skills::SkillStatusUpdate>
459  const skills::SkillExecutionID& executionId)
460  {
461  ARMARX_CHECK(executionId.skillId.isFullySpecified())
462  << "Got: " << executionId.skillId.toString();
463 
464  std::unique_lock l(skillProviderMapMutex);
465  if (auto it = skillProviderMap.find(*executionId.skillId.providerId);
466  it != skillProviderMap.end())
467  {
468  const auto& providerId = it->first;
469  const auto& provider = it->second;
470 
471  if (!provider)
472  {
473  ARMARX_WARNING << __PRETTY_FUNCTION__ << ": Found disconnected skill provider '"
474  << providerId << "'. Removing it from skills.";
475  skillProviderMap.erase(it);
476 
477  throw skills::error::SkillException(__PRETTY_FUNCTION__,
478  "Skill execution failed. Could not query a "
479  "status update of a skill of provider '" +
480  providerId.toString() +
481  "' because the provider does not exist.");
482  }
483 
484  try
485  {
486  auto async = provider->begin_getSkillExecutionStatus(executionId.toProviderIce());
487  l.unlock(); // allow parallel e.g. stopping
488  auto provider_statusUpdate_ice = provider->end_getSkillExecutionStatus(async);
489 
490  if (not provider_statusUpdate_ice)
491  {
492  return std::nullopt;
493  }
494 
495  // convert to manager view
496  auto statusUpdate = skills::SkillStatusUpdate::FromIce(
497  provider_statusUpdate_ice.value(), providerId);
498  return statusUpdate;
499  }
500  catch (...)
501  {
502  ARMARX_WARNING << __PRETTY_FUNCTION__
503  << ": Found disconnected or buggy skill provider '" << providerId
504  << "' during execution. Removing it from skills.";
505  skillProviderMap.erase(it);
506 
507  throw skills::error::SkillException(__PRETTY_FUNCTION__,
508  "Skill execution failed. Could not query a "
509  "status update of a skill of provider '" +
510  providerId.toString() +
511  "' because the provider does not exist.");
512  }
513  }
514  else
515  {
516  return std::nullopt;
517  }
518  }
519 
520  std::map<skills::SkillExecutionID, skills::SkillStatusUpdate>
522  {
523  std::map<skills::SkillExecutionID, skills::SkillStatusUpdate> ret;
524 
525  std::scoped_lock l(skillProviderMapMutex);
526  for (auto it = skillProviderMap.cbegin(); it != skillProviderMap.cend();)
527  {
528  const auto& providerId = it->first;
529  const auto& provider = it->second;
530 
531  if (!provider)
532  {
533  ARMARX_WARNING << __PRETTY_FUNCTION__ << ": Found disconnected skill provider '"
534  << providerId << "'. Removing it from skills.";
535  it = skillProviderMap.erase(it);
536  continue;
537  }
538 
539  try
540  {
541  auto m = provider->getSkillExecutionStatuses();
542 
543  for (const auto& [provider_executionId_ice, provider_statusUpdate_ice] : m)
544  {
545  ret.insert(
546  {skills::SkillExecutionID::FromIce(provider_executionId_ice, providerId),
547  skills::SkillStatusUpdate::FromIce(provider_statusUpdate_ice,
548  providerId)});
549  }
550  it++;
551  }
552  catch (...)
553  {
554  ARMARX_WARNING << __PRETTY_FUNCTION__ << ": Found buggy skill provider '"
555  << providerId << "'. Removing it from skills.";
556  it = skillProviderMap.erase(it);
557  }
558  }
559  return ret;
560  }
561 
562 } // namespace armarx::plugins
563 
564 namespace armarx
565 {
567  {
568  addPlugin(plugin);
569  }
570 
571  void
572  SkillManagerComponentPluginUser::addProvider(const skills::manager::dto::ProviderInfo& info,
573  const Ice::Current&)
574  {
575  auto i = skills::ProviderInfo::FromIce(info);
576  this->plugin->addProvider(i);
577  }
578 
579  void
581  const skills::manager::dto::ProviderID& provider,
582  const Ice::Current&)
583  {
584  auto i = skills::ProviderID::FromIce(provider);
585  this->plugin->removeProvider(i);
586  }
587 
588  skills::manager::dto::SkillStatusUpdate
590  const skills::manager::dto::SkillExecutionRequest& info,
591  const Ice::Current&)
592  {
594  return this->plugin->executeSkill(e).toManagerIce();
595  }
596 
597  skills::manager::dto::SkillExecutionID
599  const skills::manager::dto::SkillExecutionRequest& info,
600  const Ice::Current& current)
601  {
603  return this->plugin->executeSkillAsync(e).toManagerIce();
604  }
605 
606  skills::provider::dto::ParameterUpdateResult
608  const skills::manager::dto::SkillExecutionID& info,
609  const aron::data::dto::DictPtr& params,
610  const Ice::Current& current)
611  {
612  skills::provider::dto::ParameterUpdateResult ret;
614  auto e = skills::SkillExecutionID::FromIce(info);
615  ret.success = this->plugin->updateSkillParameters(e, a);
616  return ret;
617  }
618 
619  skills::provider::dto::AbortSkillResult
620  SkillManagerComponentPluginUser::abortSkill(const skills::manager::dto::SkillExecutionID& id,
621  const Ice::Current& current)
622  {
623  skills::provider::dto::AbortSkillResult ret;
625  ret.success = this->plugin->abortSkill(i);
626  return ret;
627  }
628 
629  skills::provider::dto::AbortSkillResult
631  const skills::manager::dto::SkillExecutionID& id,
632  const Ice::Current& /*unused*/)
633  {
634  skills::provider::dto::AbortSkillResult ret;
636  ret.success = this->plugin->abortSkillAsync(i);
637  return ret;
638  }
639 
640  void
642  const skills::provider::dto::SkillStatusUpdate& statusUpdate,
643  const skills::callback::dto::ProviderID& pid,
644  const Ice::Current&)
645  {
646  (void)statusUpdate;
647  (void)pid;
648  // If you want to use the status, implement this method!
649  }
650 
651  skills::manager::dto::SkillDescriptionMap
653  {
654  skills::manager::dto::SkillDescriptionMap ret;
655 
656  auto m = this->plugin->getSkillDescriptions();
657 
658  for (const auto& [k, v] : m)
659  {
660  ret.insert({k.toManagerIce(), v.toManagerIce()});
661  }
662 
663  return ret;
664  }
665 
666  IceUtil::Optional<skills::manager::dto::SkillDescription>
667  SkillManagerComponentPluginUser::getSkillDescription(const skills::manager::dto::SkillID& id,
668  const Ice::Current& current)
669  {
670  auto e = skills::SkillID::FromIce(id);
671  auto o = this->plugin->getSkillDescription(e);
672  if (o.has_value())
673  {
674  return o->toManagerIce();
675  }
676  return {};
677  }
678 
679  IceUtil::Optional<skills::manager::dto::SkillStatusUpdate>
681  const skills::manager::dto::SkillExecutionID& executionId,
682  const Ice::Current& current)
683  {
684  auto e = skills::SkillExecutionID::FromIce(executionId);
685  auto o = this->plugin->getSkillExecutionStatus(e);
686  if (o.has_value())
687  {
688  return o->toManagerIce();
689  }
690  return {};
691  }
692 
693  skills::manager::dto::SkillStatusUpdateMap
695  {
696  skills::manager::dto::SkillStatusUpdateMap ret;
697 
698  auto m = this->plugin->getSkillExecutionStatuses();
699 
700  for (const auto& [k, v] : m)
701  {
702  ret.insert({k.toManagerIce(), v.toManagerIce()});
703  }
704 
705  return ret;
706  }
707 } // namespace armarx
armarx::skills::SkillExecutionID
Definition: SkillExecutionID.h:19
armarx::skills::ProviderID::toString
std::string toString() const
Definition: ProviderID.cpp:56
armarx::skills::SkillID::toString
std::string toString() const
Definition: SkillID.cpp:64
armarx::aron::ret
ReaderT::InputType T & ret
Definition: rw.h:21
armarx::skills::SkillStatusUpdate::toManagerIce
manager::dto::SkillStatusUpdate toManagerIce() const
Definition: SkillStatusUpdate.cpp:287
Exception.h
SkillStatusUpdate.h
armarx::skills::SkillStatusUpdate::FromIce
static SkillStatusUpdate FromIce(const provider::dto::SkillStatusUpdate &update, const std::optional< skills::ProviderID > &providerId=std::nullopt)
Definition: SkillStatusUpdate.cpp:367
armarx::skills::SkillExecutionRequest::skillId
skills::SkillID skillId
Definition: SkillExecutionRequest.h:33
SkillID.h
armarx::SkillManagerComponentPluginUser::getSkillExecutionStatus
IceUtil::Optional< skills::manager::dto::SkillStatusUpdate > getSkillExecutionStatus(const skills::manager::dto::SkillExecutionID &executionId, const Ice::Current &current) override
Definition: SkillManagerComponentPlugin.cpp:680
armarx::SkillManagerComponentPluginUser::executeSkill
skills::manager::dto::SkillStatusUpdate executeSkill(const skills::manager::dto::SkillExecutionRequest &info, const Ice::Current &current) override
Definition: SkillManagerComponentPlugin.cpp:589
armarx::skills::SkillID::skillName
std::string skillName
Definition: SkillID.h:60
armarx::plugins::SkillManagerComponentPlugin::getSkillDescription
std::optional< skills::SkillDescription > getSkillDescription(const skills::SkillID &id)
Definition: SkillManagerComponentPlugin.cpp:356
DateTime.h
armarx::skills::SkillExecutionRequest::FromIce
static SkillExecutionRequest FromIce(const manager::dto::SkillExecutionRequest &)
Definition: SkillExecutionRequest.cpp:29
armarx::skills::ProviderID::providerName
std::string providerName
Definition: ProviderID.h:31
armarx::SkillManagerComponentPluginUser::getSkillDescriptions
skills::manager::dto::SkillDescriptionMap getSkillDescriptions(const Ice::Current &current) override
Definition: SkillManagerComponentPlugin.cpp:652
armarx::skills::SkillID::providerId
std::optional< ProviderID > providerId
Definition: SkillID.h:59
armarx::skills::ProviderInfo::FromIce
static ProviderInfo FromIce(const manager::dto::ProviderInfo &)
Definition: ProviderInfo.cpp:22
armarx::plugins::SkillManagerComponentPlugin::getSkillDescriptions
std::map< skills::SkillID, skills::SkillDescription > getSkillDescriptions()
Definition: SkillManagerComponentPlugin.cpp:416
ice_conversions.h
armarx::ManagedIceObject::addPlugin
PluginT * addPlugin(const std::string prefix="", ParamsT &&...params)
Definition: ManagedIceObject.h:182
armarx::plugins::SkillManagerComponentPlugin::abortSkill
bool abortSkill(const skills::SkillExecutionID &id)
Definition: SkillManagerComponentPlugin.cpp:276
armarx::SkillManagerComponentPluginUser::executeSkillAsync
skills::manager::dto::SkillExecutionID executeSkillAsync(const skills::manager::dto::SkillExecutionRequest &skillExecutionRequest, const Ice::Current &current) override
Definition: SkillManagerComponentPlugin.cpp:598
armarx::skills::SkillExecutionID::toProviderIce
skills::provider::dto::SkillExecutionID toProviderIce() const
Definition: SkillExecutionID.cpp:19
armarx::aron::data::Dict::FromAronDictDTO
static PointerType FromAronDictDTO(const data::dto::DictPtr &aron)
Definition: Dict.cpp:129
armarx::SkillManagerComponentPluginUser::getSkillExecutionStatuses
skills::manager::dto::SkillStatusUpdateMap getSkillExecutionStatuses(const Ice::Current &current) override
Definition: SkillManagerComponentPlugin.cpp:694
ARMARX_CHECK
#define ARMARX_CHECK(expression)
Shortcut for ARMARX_CHECK_EXPRESSION.
Definition: ExpressionException.h:82
SkillManagerComponentPlugin.h
armarx::skills::SkillExecutionID::toManagerIce
skills::manager::dto::SkillExecutionID toManagerIce() const
Definition: SkillExecutionID.cpp:9
armarx::plugins::SkillManagerComponentPlugin::executeSkill
skills::SkillStatusUpdate executeSkill(const skills::SkillExecutionRequest &req)
Definition: SkillManagerComponentPlugin.cpp:85
armarx::skills::SkillExecutionRequest
Definition: SkillExecutionRequest.h:21
armarx::skills::ProviderInfo::providerInterface
provider::dti::SkillProviderInterfacePrx providerInterface
Definition: ProviderInfo.h:23
armarx::plugins::SkillManagerComponentPlugin::removeProvider
void removeProvider(const skills::ProviderID &id)
Definition: SkillManagerComponentPlugin.cpp:69
armarx::skills::SkillStatusUpdate
Definition: SkillStatusUpdate.h:139
armarx::ctrlutil::a
double a(double t, double a0, double j)
Definition: CtrlUtil.h:45
armarx::SkillManagerComponentPluginUser::getSkillDescription
IceUtil::Optional< skills::manager::dto::SkillDescription > getSkillDescription(const skills::manager::dto::SkillID &id, const Ice::Current &current) override
Definition: SkillManagerComponentPlugin.cpp:667
armarx::skills::ProviderID
Definition: ProviderID.h:15
armarx::SkillManagerComponentPluginUser::abortSkill
skills::provider::dto::AbortSkillResult abortSkill(const skills::manager::dto::SkillExecutionID &id, const Ice::Current &current) override
Definition: SkillManagerComponentPlugin.cpp:620
armarx::plugins
This file is part of ArmarX.
Definition: DebugObserverComponentPlugin.cpp:28
data
uint8_t data[1]
Definition: EtherCATFrame.h:68
armarx::plugins::SkillManagerComponentPlugin::preOnConnectComponent
void preOnConnectComponent() override
Definition: SkillManagerComponentPlugin.cpp:19
armarx::plugins::SkillManagerComponentPlugin::updateSkillParameters
bool updateSkillParameters(const skills::SkillExecutionID &id, const aron::data::DictPtr &data)
Definition: SkillManagerComponentPlugin.cpp:233
armarx::skills::error::SkillException
A base class for skill exceptions.
Definition: Exception.h:40
armarx::skills::SkillID::FromIce
static SkillID FromIce(const manager::dto::SkillID &)
Definition: SkillID.cpp:32
armarx::SkillManagerComponentPluginUser::removeProvider
void removeProvider(const skills::manager::dto::ProviderID &provider, const Ice::Current &current) override
Definition: SkillManagerComponentPlugin.cpp:580
Component.h
armarx::plugins::SkillManagerComponentPlugin::getSkillExecutionStatus
std::optional< skills::SkillStatusUpdate > getSkillExecutionStatus(const skills::SkillExecutionID &id)
Definition: SkillManagerComponentPlugin.cpp:458
armarx::aron::data::DictPtr
std::shared_ptr< Dict > DictPtr
Definition: Dict.h:41
armarx::ctrlutil::v
double v(double t, double v0, double a0, double j)
Definition: CtrlUtil.h:39
armarx::SkillManagerComponentPluginUser::updateStatusForSkill
void updateStatusForSkill(const skills::provider::dto::SkillStatusUpdate &update, const skills::callback::dto::ProviderID &id, const Ice::Current &current) override
Definition: SkillManagerComponentPlugin.cpp:641
ARMARX_INFO
#define ARMARX_INFO
Definition: Logging.h:174
armarx::SkillManagerComponentPluginUser::addProvider
void addProvider(const skills::manager::dto::ProviderInfo &providerInfo, const Ice::Current &current) override
Definition: SkillManagerComponentPlugin.cpp:572
IceUtil::Handle< class PropertyDefinitionContainer >
armarx::plugins::SkillManagerComponentPlugin::preOnInitComponent
void preOnInitComponent() override
Definition: SkillManagerComponentPlugin.cpp:14
armarx::skills::SkillExecutionID::skillId
SkillID skillId
Definition: SkillExecutionID.h:21
armarx::plugins::SkillManagerComponentPlugin::abortSkillAsync
bool abortSkillAsync(const skills::SkillExecutionID &id)
Definition: SkillManagerComponentPlugin.cpp:317
armarx::skills::SkillExecutionID::FromIce
static SkillExecutionID FromIce(const skills::manager::dto::SkillExecutionID &)
Definition: SkillExecutionID.cpp:29
armarx::skills::SkillExecutionRequest::parameters
armarx::aron::data::DictPtr parameters
Definition: SkillExecutionRequest.h:35
armarx::plugins::SkillManagerComponentPlugin::postCreatePropertyDefinitions
void postCreatePropertyDefinitions(PropertyDefinitionsPtr &properties) override
Definition: SkillManagerComponentPlugin.cpp:26
armarx::skills::SkillExecutionRequest::executorName
std::string executorName
Definition: SkillExecutionRequest.h:34
armarx::plugins::SkillManagerComponentPlugin::addProvider
void addProvider(const skills::ProviderInfo &info)
Definition: SkillManagerComponentPlugin.cpp:49
armarx::skills::SkillID::toProviderIce
provider::dto::SkillID toProviderIce() const
Definition: SkillID.cpp:58
armarx::skills::ProviderInfo
Definition: ProviderInfo.h:19
armarx::plugins::SkillManagerComponentPlugin::executeSkillAsync
skills::SkillExecutionID executeSkillAsync(const skills::SkillExecutionRequest &req)
Definition: SkillManagerComponentPlugin.cpp:158
armarx::SkillManagerComponentPluginUser::updateSkillParameters
skills::provider::dto::ParameterUpdateResult updateSkillParameters(const skills::manager::dto::SkillExecutionID &executionId, const aron::data::dto::DictPtr &params, const Ice::Current &current) override
Definition: SkillManagerComponentPlugin.cpp:607
ARMARX_WARNING
#define ARMARX_WARNING
Definition: Logging.h:186
armarx::skills::SkillDescription::FromIce
static SkillDescription FromIce(const provider::dto::SkillDescription &i, const std::optional< ProviderID > &=std::nullopt)
Definition: SkillDescription.cpp:39
armarx::skills::SkillID
Definition: SkillID.h:17
armarx::skills::SkillID::isFullySpecified
bool isFullySpecified() const
Definition: SkillID.h:29
armarx::skills::ProviderInfo::providerId
ProviderID providerId
Definition: ProviderInfo.h:22
armarx::plugins::SkillManagerComponentPlugin::getFirstProviderNameThatHasSkill
skills::ProviderID getFirstProviderNameThatHasSkill(const skills::SkillID &skillid)
Definition: SkillManagerComponentPlugin.cpp:31
armarx::SkillManagerComponentPluginUser::abortSkillAsync
skills::provider::dto::AbortSkillResult abortSkillAsync(const skills::manager::dto::SkillExecutionID &id, const Ice::Current &current) override
Definition: SkillManagerComponentPlugin.cpp:630
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:28
armarx::skills::ProviderID::FromIce
static ProviderID FromIce(const manager::dto::ProviderID &)
Definition: ProviderID.cpp:32
armarx::plugins::SkillManagerComponentPlugin::getSkillExecutionStatuses
std::map< skills::SkillExecutionID, skills::SkillStatusUpdate > getSkillExecutionStatuses()
Definition: SkillManagerComponentPlugin.cpp:521
armarx::SkillManagerComponentPluginUser::SkillManagerComponentPluginUser
SkillManagerComponentPluginUser()
Definition: SkillManagerComponentPlugin.cpp:566