SkillProviderComponentPlugin.cpp
Go to the documentation of this file.
2 
4 
7 
8 namespace armarx::plugins
9 {
10  void
12  {
13  }
14 
15  void
17  {
18  auto& p = parent<SkillProviderComponentPluginUser>();
19  p.getProxy(myPrx, -1);
20  }
21 
22  void
24  {
25  auto& p = parent<SkillProviderComponentPluginUser>();
26  const std::string providerName = p.getName();
27 
28  // register self to manager
30  .providerInterface = myPrx,
31  .providedSkills = getSkillDescriptions()};
32 
33  ARMARX_INFO << "Adding provider to manager: " << i.providerId;
34  manager->addProvider(i.toIce()); // add provider info to manager
35  }
36 
37  void
39  {
40  auto& p = parent<SkillProviderComponentPluginUser>();
41  std::string providerName = p.getName();
42 
43  auto id = skills::manager::dto::ProviderID{providerName};
44  manager->removeProvider(id);
45  }
46 
47  void
49  {
50  std::string prefix = "skill.";
51  properties->component(
52  manager,
53  "SkillMemory",
54  prefix + "SkillManager",
55  "The name of the SkillManager (or SkillMemory) proxy this provider belongs to.");
56  }
57 
58  void
59  SkillProviderComponentPlugin::addSkillFactory(std::unique_ptr<skills::SkillBlueprint>&& fac)
60  {
61  if (!fac)
62  {
63  return;
64  }
65 
66  auto& p = parent<SkillProviderComponentPluginUser>();
67  const std::string componentName = p.getName();
68 
69  const skills::ProviderID providerId({componentName});
70 
71  // lock skills map
72  const std::unique_lock l(skillFactoriesMutex);
73  auto skillId = fac->createSkillDescription(providerId).skillId;
74 
75  if (skillFactories.find(skillId) != skillFactories.end())
76  {
77  ARMARX_WARNING << "Try to add a skill factory for skill '" + skillId.toString() +
78  "' which already exists in list. Ignoring this skill.";
79  return;
80  }
81 
82  ARMARX_INFO << "Adding skill `" << skillId << "` to component `" << componentName << "` .";
83 
84  skillFactories.emplace(skillId, std::move(fac));
85 
86  // if (connected)
87  // {
88  // // if skill is added after onConnect we have to set the proxies manually.
89  // std::string providerName = parent().getName();
90  // s.first->second.skill->manager = manager;
91  // s.first->second.skill->providerName = providerName;
92  // }
93  }
94 
98  {
99  return addSkillFactory<skills::LambdaSkill>(desc, f);
100  }
101 
103  SkillProviderComponentPlugin::getSkillFactory(const armarx::skills::SkillID& skillId)
104  {
105  // NON BLOCKING: WE ASSERT THAT THE LOCK IS ALREADY TAKEN
106  ARMARX_CHECK(skillId.isFullySpecified());
107 
108  if (skillFactories.count(skillId) == 0)
109  {
110  ARMARX_INFO << "Could not find a skill factory for id: " << skillId;
111  return nullptr;
112  }
113 
114  auto* facPtr = skillFactories.at(skillId).get();
115  return static_cast<skills::SkillBlueprint*>(facPtr);
116  }
117 
118  std::optional<skills::SkillStatusUpdate>
120  const skills::SkillExecutionID& execId) const
121  {
123 
124  const std::shared_lock l(skillExecutionsMutex);
125  if (skillExecutions.find(execId) == skillExecutions.end())
126  {
127  ARMARX_WARNING << "Skill execution for skill '" + execId.skillId.toString() +
128  "' not found!";
129  return std::nullopt;
130  }
131 
132  std::scoped_lock l2{skillExecutions.at(execId).skillStatusesMutex};
133  return skillExecutions.at(execId).statusUpdate;
134  }
135 
136  std::map<skills::SkillExecutionID, skills::SkillStatusUpdate>
138  {
139  std::map<skills::SkillExecutionID, skills::SkillStatusUpdate> skillUpdates;
140 
141  const std::shared_lock l(skillExecutionsMutex);
142  for (const auto& [key, impl] : skillExecutions)
143  {
144  const std::scoped_lock l2(impl.skillStatusesMutex);
145  skillUpdates.insert({key, impl.statusUpdate});
146  }
147  return skillUpdates;
148  }
149 
150  std::optional<skills::SkillDescription>
152  {
153  ARMARX_CHECK(skillId.isFullySpecified());
154 
155  const std::shared_lock l(skillFactoriesMutex);
156  if (skillFactories.find(skillId) == skillFactories.end())
157  {
158  std::stringstream ss;
159  ss << "Skill description for skill '" + skillId.toString() +
160  "' not found! Found instead: {"
161  << "\n";
162  for (const auto& [k, _] : skillFactories)
163  {
164  ss << "\t" << k.toString() << "\n";
165  }
166  ss << "}";
167  ARMARX_WARNING << ss.str();
168 
169  return std::nullopt;
170  }
171 
172  return skillFactories.at(skillId)->createSkillDescription(*skillId.providerId);
173  }
174 
175  std::map<skills::SkillID, skills::SkillDescription>
177  {
178  std::map<skills::SkillID, skills::SkillDescription> skillDesciptions;
179  const std::shared_lock l(skillFactoriesMutex);
180  for (const auto& [key, fac] : skillFactories)
181  {
182  ARMARX_CHECK(key.isFullySpecified());
183  skillDesciptions.insert({key, fac->createSkillDescription(*key.providerId)});
184  }
185  return skillDesciptions;
186  }
187 
190  const skills::SkillExecutionRequest& executionRequest)
191  {
192  ARMARX_CHECK(executionRequest.skillId.isFullySpecified());
193 
194  skills::SkillExecutionID executionId{.skillId = executionRequest.skillId,
195  .executorName = executionRequest.executorName,
196  .executionStartedTime =
198 
200  {executionId, executionRequest.parameters, executionRequest.callbackInterface}};
201 
203  {
204  auto l1 = std::unique_lock{skillFactoriesMutex};
205 
206  const auto& fac = getSkillFactory(executionId.skillId);
207  ARMARX_CHECK(fac) << "Could not find a factory for skill " << executionId.skillId;
208 
209  {
210  const std::unique_lock l2{skillExecutionsMutex};
211  auto it =
212  skillExecutions.emplace(std::piecewise_construct,
213  std::make_tuple(executionId),
214  std::make_tuple(fac,
215  executionId,
216  executionRequest.parameters,
217  executionRequest.callbackInterface));
218  wrapper = &it.first->second;
219  // ATTENTION NOT DEFINED BEHAVIOR
220  }
221 
222  // async start execution. But we wait for the execution to finish at the end of this method
223  wrapper->execution = std::thread(
224  [&]()
225  {
226  // execute waits until the previous execution finishes.
227  try
228  {
229  auto x = wrapper->executeSkill();
230  ret.result = x.result;
231  ret.status = armarx::skills::toSkillStatus(x.status);
232  }
233  catch(std::exception& e)
234  {
235  ARMARX_WARNING << "Got an uncatched Exception when executing a skill. Exception was: " << e.what();
236  }
237  });
238  } // release lock. We don't know how long the skill needs to finish and we have to release the lock for being able to abort the execution
239 
240  if (wrapper && wrapper->execution.joinable())
241  {
242  wrapper->execution.join();
243 
244  // tidy up map of executions
245  // const std::unique_lock l2{skillExecutionsMutex};
246  // if (auto it = skillExecutions.find(executionId); it != skillExecutions.end())
247  // {
248  // skillExecutions.erase(it);
249  // }
250  }
251  return ret;
252  }
253 
256  const skills::SkillExecutionRequest& executionRequest)
257  {
258  ARMARX_CHECK(executionRequest.skillId.isFullySpecified());
259 
260  skills::SkillExecutionID executionId;
261 
262 
264  {
265  auto l1 = std::unique_lock{skillFactoriesMutex};
266 
267  const auto& fac = getSkillFactory(executionRequest.skillId);
268  ARMARX_CHECK(fac) << "Could not find a factory for skill " << executionRequest.skillId;
269 
270  {
271  const std::unique_lock l2{skillExecutionsMutex};
272 
273  executionId = skills::SkillExecutionID{executionRequest.skillId,
274  executionRequest.executorName,
276 
277  if (skillExecutions.count(executionId) > 0)
278  {
279  ARMARX_ERROR << "SkillsExecutionID already exists! This is undefined behaviour and should not occur!";
280  }
281 
282  auto it =
283  skillExecutions.emplace(std::piecewise_construct,
284  std::make_tuple(executionId),
285  std::make_tuple(fac,
286  executionId,
287  executionRequest.parameters,
288  executionRequest.callbackInterface));
289  wrapper = &it.first->second;
290  // ATTENTION NOT DEFINED BEHAVIOR
291  }
292 
293  wrapper->execution = std::thread(
294  [&]()
295  {
296  try
297  {
298  // execute waits until the previous execution finishes.
299  auto x = wrapper->executeSkill();
300  }
301  catch(std::exception& e)
302  {
303  ARMARX_WARNING << "Got an uncatched Exception when executing a skill. Exception was: " << e.what();
304  }
305  });
306  }
307 
308  // wait until skill is constructed. This assures, that a status update exists.
309  while (true)
310  {
311  {
312  std::scoped_lock l(wrapper->skillStatusesMutex);
313 
314  if (wrapper->statusUpdate.hasBeenConstructed())
315  {
316  break;
317  }
318  }
319 
320  std::this_thread::sleep_for(std::chrono::milliseconds(20));
321  }
322 
323  return executionId;
324  }
325 
326  bool
329  {
330  ARMARX_CHECK(executionId.skillId.isFullySpecified());
331 
332  std::shared_lock l{skillExecutionsMutex};
333  auto it = skillExecutions.find(executionId);
334  if (it == skillExecutions.end())
335  {
336  ARMARX_INFO << "No acive execution for skill '" + executionId.skillId.toString() +
337  "' found! Ignoring prepareSkill request.";
338  return false;
339  }
340 
341  std::scoped_lock l2{it->second.skillStatusesMutex};
342  if (it->second.statusUpdate.status != skills::SkillStatus::Preparing)
343  {
344  ARMARX_INFO << "Could not prepare the skill '" + executionId.skillId.toString() +
345  "' because its not in preparing phase.";
346  return false;
347  }
348 
349  it->second.updateSkillParameters(input);
350  return true;
351  }
352 
353  bool
355  {
356  ARMARX_CHECK(executionId.skillId.isFullySpecified());
357 
358  std::shared_lock l(skillExecutionsMutex);
359  auto it = skillExecutions.find(executionId);
360  if (it == skillExecutions.end())
361  {
362  ARMARX_INFO << "No acive execution for skill '" + executionId.skillId.toString() +
363  "' found! Ignoring abortSkill request.";
364  return false;
365  }
366 
367  auto& runtime = it->second;
368  runtime.stopSkill();
369 
370  while (true)
371  {
372  {
373  std::scoped_lock l(runtime.skillStatusesMutex);
374  auto status = runtime.statusUpdate;
375 
376  if (status.hasBeenTerminated())
377  {
378  break;
379  }
380  }
381  std::this_thread::sleep_for(std::chrono::milliseconds(20));
382  }
383 
384  return true;
385  }
386 
387  bool
389  {
390  ARMARX_CHECK(executionId.skillId.isFullySpecified());
391 
392  std::shared_lock l(skillExecutionsMutex);
393  auto it = skillExecutions.find(executionId);
394  if (it == skillExecutions.end())
395  {
396  ARMARX_INFO << "No acive execution for skill '" + executionId.skillId.toString() +
397  "' found! Ignoring abortSkill request.";
398  return false;
399  }
400 
401  it->second.stopSkill();
402  return true;
403  }
404 
405 } // namespace armarx::plugins
406 
407 namespace armarx
408 {
410  {
411  addPlugin(plugin);
412  }
413 
414  IceUtil::Optional<skills::provider::dto::SkillDescription>
416  const skills::provider::dto::SkillID& skillId,
417  const Ice::Current& /*unused*/)
418  {
420  auto o = plugin->getSkillDescription(id);
421  if (o.has_value())
422  {
423  return o->toProviderIce();
424  }
425  return {};
426  }
427 
428  skills::provider::dto::SkillDescriptionMap
430  {
431  skills::provider::dto::SkillDescriptionMap ret;
432  for (const auto& [k, v] : plugin->getSkillDescriptions())
433  {
434  ret.insert({k.toProviderIce(), v.toProviderIce()});
435  }
436  return ret;
437  }
438 
439  IceUtil::Optional<skills::provider::dto::SkillStatusUpdate>
441  const skills::provider::dto::SkillExecutionID& executionId,
442  const Ice::Current& /*unused*/)
443  {
444  auto execId = skills::SkillExecutionID::FromIce(
445  executionId, skills::ProviderID{.providerName = getName()});
446  auto o = plugin->getSkillExecutionStatus(execId);
447  if (o.has_value())
448  {
449  return o->toProviderIce();
450  }
451  return {};
452  }
453 
454  skills::provider::dto::SkillStatusUpdateMap
456  {
457  skills::provider::dto::SkillStatusUpdateMap ret;
458  for (const auto& [k, v] : plugin->getSkillExecutionStatuses())
459  {
460  ret.insert({k.toProviderIce(), v.toProviderIce()});
461  }
462  return ret;
463  }
464 
465  // Please not that this method waits until the skill can be scheduled!
466  skills::provider::dto::SkillStatusUpdate
468  const skills::provider::dto::SkillExecutionRequest& info,
469  const Ice::Current& /*unused*/)
470  {
473  auto up = this->plugin->executeSkill(exec);
474  return up.toProviderIce();
475  }
476 
477  skills::provider::dto::SkillExecutionID
479  const skills::provider::dto::SkillExecutionRequest& info,
480  const Ice::Current& current /*unused*/)
481  {
484  auto id = this->plugin->executeSkillAsync(exec);
485  return id.toProviderIce();
486  }
487 
488  skills::provider::dto::ParameterUpdateResult
490  const skills::provider::dto::SkillExecutionID& id,
492  const Ice::Current& current /*unused*/)
493  {
494  skills::provider::dto::ParameterUpdateResult res;
495 
496  auto exec =
499  res.success = this->plugin->updateSkillParameters(exec, prep);
500  return res;
501  }
502 
503  skills::provider::dto::AbortSkillResult
504  SkillProviderComponentPluginUser::abortSkill(const skills::provider::dto::SkillExecutionID& id,
505  const Ice::Current& /*unused*/)
506  {
507  skills::provider::dto::AbortSkillResult res;
508  auto exec =
510  res.success = this->plugin->abortSkill(exec);
511  return res;
512  }
513 
514  skills::provider::dto::AbortSkillResult
516  const skills::provider::dto::SkillExecutionID& id,
517  const Ice::Current& /*unused*/)
518  {
519  skills::provider::dto::AbortSkillResult res;
520  auto exec =
522  res.success = this->plugin->abortSkillAsync(exec);
523  return res;
524  }
525 
528  {
529  return plugin;
530  }
531 } // namespace armarx
armarx::skills::SkillExecutionID
Definition: SkillExecutionID.h:19
armarx::SkillProviderComponentPluginUser::getSkillProviderPlugin
const std::experimental::observer_ptr< plugins::SkillProviderComponentPlugin > & getSkillProviderPlugin() const
Definition: SkillProviderComponentPlugin.cpp:527
armarx::skills::SkillID::toString
std::string toString() const
Definition: SkillID.cpp:64
armarx::aron::ret
ReaderT::InputType T & ret
Definition: rw.h:21
armarx::plugins::SkillProviderComponentPlugin::preOnDisconnectComponent
void preOnDisconnectComponent() override
Definition: SkillProviderComponentPlugin.cpp:38
armarx::SkillProviderComponentPluginUser::getSkillDescriptions
skills::provider::dto::SkillDescriptionMap getSkillDescriptions(const Ice::Current &current=Ice::Current()) override
Definition: SkillProviderComponentPlugin.cpp:429
armarx::skills::SkillExecutionRequest::skillId
skills::SkillID skillId
Definition: SkillExecutionRequest.h:33
armarx::SkillProviderComponentPluginUser::getSkillDescription
IceUtil::Optional< skills::provider::dto::SkillDescription > getSkillDescription(const skills::provider::dto::SkillID &skill, const Ice::Current &current=Ice::Current()) override
Definition: SkillProviderComponentPlugin.cpp:415
armarx::ManagedIceObjectPlugin::prefix
const std::string & prefix() const
Definition: ManagedIceObjectPlugin.cpp:63
armarx::plugins::SkillProviderComponentPlugin::getSkillDescription
std::optional< skills::SkillDescription > getSkillDescription(const skills::SkillID &) const
Definition: SkillProviderComponentPlugin.cpp:151
armarx::skills::detail::SkillRuntime::statusUpdate
SkillStatusUpdate statusUpdate
Definition: SkillImplementationWrapper.h:31
armarx::plugins::SkillProviderComponentPlugin::executeSkill
skills::SkillStatusUpdate executeSkill(const skills::SkillExecutionRequest &executionInfo)
Definition: SkillProviderComponentPlugin.cpp:189
armarx::plugins::SkillProviderComponentPlugin::preOnConnectComponent
void preOnConnectComponent() override
Definition: SkillProviderComponentPlugin.cpp:16
armarx::plugins::SkillProviderComponentPlugin::addSkillFactory
void addSkillFactory(std::unique_ptr< skills::SkillBlueprint > &&)
Definition: SkillProviderComponentPlugin.cpp:59
SkillProviderComponentPlugin.h
armarx::skills::SkillDescription
Definition: SkillDescription.h:18
armarx::core::time::DateTime::Now
static DateTime Now()
Definition: DateTime.cpp:55
armarx::SkillProviderComponentPluginUser::updateSkillParameters
skills::provider::dto::ParameterUpdateResult updateSkillParameters(const skills::provider::dto::SkillExecutionID &executionId, const armarx::aron::data::dto::DictPtr &parameters, const Ice::Current &current=Ice::Current()) override
Definition: SkillProviderComponentPlugin.cpp:489
armarx::skills::SkillID::isSkillSpecified
bool isSkillSpecified() const
Definition: SkillID.h:35
armarx::skills::detail::SkillRuntime::skillStatusesMutex
std::mutex skillStatusesMutex
Definition: SkillImplementationWrapper.h:30
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::skills::SkillID::providerId
std::optional< ProviderID > providerId
Definition: SkillID.h:59
armarx::skills::LambdaSkill::FunctionType
std::function< TerminatedSkillStatus()> FunctionType
Definition: LambdaSkill.h:12
armarx::ManagedIceObject::addPlugin
PluginT * addPlugin(const std::string prefix="", ParamsT &&...params)
Definition: ManagedIceObject.h:182
armarx::SkillProviderComponentPluginUser::abortSkillAsync
skills::provider::dto::AbortSkillResult abortSkillAsync(const skills::provider::dto::SkillExecutionID &skill, const Ice::Current &current=Ice::Current()) override
Definition: SkillProviderComponentPlugin.cpp:515
armarx::SkillProviderComponentPluginUser::executeSkillAsync
skills::provider::dto::SkillExecutionID executeSkillAsync(const skills::provider::dto::SkillExecutionRequest &executionInfo, const Ice::Current &current=Ice::Current()) override
Definition: SkillProviderComponentPlugin.cpp:478
std::experimental::fundamentals_v2::observer_ptr
Definition: ManagedIceObject.h:53
armarx::aron::data::Dict::FromAronDictDTO
static PointerType FromAronDictDTO(const data::dto::DictPtr &aron)
Definition: Dict.cpp:129
armarx::plugins::SkillProviderComponentPlugin::abortSkillAsync
bool abortSkillAsync(const skills::SkillExecutionID &execId)
Definition: SkillProviderComponentPlugin.cpp:388
ARMARX_CHECK
#define ARMARX_CHECK(expression)
Shortcut for ARMARX_CHECK_EXPRESSION.
Definition: ExpressionException.h:82
armarx::plugins::SkillProviderComponentPlugin::getSkillExecutionStatus
std::optional< skills::SkillStatusUpdate > getSkillExecutionStatus(const skills::SkillExecutionID &) const
Definition: SkillProviderComponentPlugin.cpp:119
armarx::skills::detail::SkillRuntime::execution
std::thread execution
Definition: SkillImplementationWrapper.h:34
armarx::skills::SkillExecutionRequest
Definition: SkillExecutionRequest.h:21
armarx::skills::detail::SkillRuntime::executeSkill
TerminatedSkillStatusUpdate executeSkill()
Definition: SkillImplementationWrapper.cpp:46
armarx::status
status
Definition: FiniteStateMachine.h:259
armarx::plugins::SkillProviderComponentPlugin::abortSkill
bool abortSkill(const skills::SkillExecutionID &execId)
Definition: SkillProviderComponentPlugin.cpp:354
armarx::plugins::SkillProviderComponentPlugin::updateSkillParameters
bool updateSkillParameters(const skills::SkillExecutionID &id, const armarx::aron::data::DictPtr &params)
Definition: SkillProviderComponentPlugin.cpp:327
armarx::skills::SkillStatusUpdate
Definition: SkillStatusUpdate.h:139
armarx::skills::ProviderID
Definition: ProviderID.h:15
armarx::plugins
This file is part of ArmarX.
Definition: DebugObserverComponentPlugin.cpp:28
armarx::skills::SkillExecutionRequest::callbackInterface
callback::dti::SkillProviderCallbackInterfacePrx callbackInterface
Definition: SkillExecutionRequest.h:36
armarx::aron::input
ReaderT::InputType & input
Definition: rw.h:19
armarx::plugins::SkillProviderComponentPlugin::postOnConnectComponent
void postOnConnectComponent() override
Definition: SkillProviderComponentPlugin.cpp:23
armarx::skills::SkillStatus::Preparing
@ Preparing
armarx::SkillProviderComponentPluginUser::abortSkill
skills::provider::dto::AbortSkillResult abortSkill(const skills::provider::dto::SkillExecutionID &skill, const Ice::Current &current=Ice::Current()) override
Definition: SkillProviderComponentPlugin.cpp:504
armarx::SkillProviderComponentPluginUser::executeSkill
skills::provider::dto::SkillStatusUpdate executeSkill(const skills::provider::dto::SkillExecutionRequest &executionInfo, const Ice::Current &current=Ice::Current()) override
Definition: SkillProviderComponentPlugin.cpp:467
armarx::plugins::SkillProviderComponentPlugin::getSkillDescriptions
std::map< skills::SkillID, skills::SkillDescription > getSkillDescriptions() const
Definition: SkillProviderComponentPlugin.cpp:176
armarx::SkillProviderComponentPluginUser::getSkillExecutionStatus
IceUtil::Optional< skills::provider::dto::SkillStatusUpdate > getSkillExecutionStatus(const skills::provider::dto::SkillExecutionID &executionId, const Ice::Current &current=Ice::Current()) override
Definition: SkillProviderComponentPlugin.cpp:440
armarx::skills::SkillID::FromIce
static SkillID FromIce(const manager::dto::SkillID &)
Definition: SkillID.cpp:32
ARMARX_ERROR
#define ARMARX_ERROR
Definition: Logging.h:189
armarx::skills::SkillStatusUpdate::hasBeenConstructed
bool hasBeenConstructed() const
Definition: SkillStatusUpdate.h:180
Component.h
armarx::skills::detail::SkillRuntime
Definition: SkillImplementationWrapper.h:19
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::skills::SkillBlueprint
Definition: SkillFactory.h:11
ARMARX_INFO
#define ARMARX_INFO
Definition: Logging.h:174
ProviderInfo.h
IceUtil::Handle< class PropertyDefinitionContainer >
armarx::skills::SkillExecutionID::skillId
SkillID skillId
Definition: SkillExecutionID.h:21
armarx::skills::SkillExecutionID::FromIce
static SkillExecutionID FromIce(const skills::manager::dto::SkillExecutionID &)
Definition: SkillExecutionID.cpp:29
armarx::plugins::SkillProviderComponentPlugin::executeSkillAsync
skills::SkillExecutionID executeSkillAsync(const skills::SkillExecutionRequest &executionInfo)
Definition: SkillProviderComponentPlugin.cpp:255
armarx::plugins::SkillProviderComponentPlugin::postCreatePropertyDefinitions
void postCreatePropertyDefinitions(PropertyDefinitionsPtr &properties) override
Definition: SkillProviderComponentPlugin.cpp:48
armarx::skills::SkillExecutionRequest::parameters
armarx::aron::data::DictPtr parameters
Definition: SkillExecutionRequest.h:35
armarx::skills::SkillExecutionRequest::executorName
std::string executorName
Definition: SkillExecutionRequest.h:34
armarx::ManagedIceObject::getName
std::string getName() const
Retrieve name of object.
Definition: ManagedIceObject.cpp:107
armarx::plugins::SkillProviderComponentPlugin::getSkillExecutionStatuses
std::map< skills::SkillExecutionID, skills::SkillStatusUpdate > getSkillExecutionStatuses() const
Definition: SkillProviderComponentPlugin.cpp:137
armarx::skills::ProviderInfo
Definition: ProviderInfo.h:19
armarx::skills::toSkillStatus
SkillStatus toSkillStatus(const ActiveOrTerminatedSkillStatus &d)
Definition: SkillStatusUpdate.cpp:8
armarx::plugins::SkillProviderComponentPlugin::preOnInitComponent
void preOnInitComponent() override
Definition: SkillProviderComponentPlugin.cpp:11
ARMARX_WARNING
#define ARMARX_WARNING
Definition: Logging.h:186
armarx::skills::SkillID
Definition: SkillID.h:17
armarx::SkillProviderComponentPluginUser::getSkillExecutionStatuses
skills::provider::dto::SkillStatusUpdateMap getSkillExecutionStatuses(const Ice::Current &current=Ice::Current()) override
Definition: SkillProviderComponentPlugin.cpp:455
armarx::skills::SkillID::isFullySpecified
bool isFullySpecified() const
Definition: SkillID.h:29
armarx::skills::ProviderInfo::providerId
ProviderID providerId
Definition: ProviderInfo.h:22
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:28
armarx::SkillProviderComponentPluginUser::SkillProviderComponentPluginUser
SkillProviderComponentPluginUser()
Definition: SkillProviderComponentPlugin.cpp:409
All.h