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