21 auto& p = parent<SkillManagerComponentPluginUser>();
22 p.getProxy(myPrx, -1);
34 for (
const auto& [providerName, providerPrx] : skillProviderMap)
36 auto allSkills = providerPrx->getSkillDescriptions();
37 for (
const auto& [currentSkillID, skillDesc] : allSkills)
39 if (currentSkillID.skillName == skillId.
skillName)
41 return {providerName};
45 return {
"INVALID PROVIDER NAME"};
51 std::scoped_lock l(skillProviderMapMutex);
52 if (skillProviderMap.find(providerInfo.
providerId) == skillProviderMap.end())
60 ARMARX_INFO <<
"Trying to add a provider with name '"
62 <<
"' but the provider already exists. "
63 <<
"Overwriting the old provider info.";
71 std::scoped_lock l(skillProviderMapMutex);
72 if (
auto it = skillProviderMap.find(providerId); it != skillProviderMap.end())
75 skillProviderMap.erase(it);
80 <<
"' but it couldn't be found.";
90 std::unique_lock l(skillProviderMapMutex);
101 if (
auto it = skillProviderMap.find(provderId); it != skillProviderMap.end())
103 const auto& provider = it->second;
107 ARMARX_WARNING << __PRETTY_FUNCTION__ <<
": Found disconnected skill provider '"
108 << provderId <<
"'. Removing it from skills.";
109 skillProviderMap.erase(it);
113 "Skill execution failed. Could not execute a skill of provider '" +
114 provderId.toString() +
"' because the provider does not exist.");
123 .callbackInterface = myPrx};
126 provider->begin_executeSkill(provider_executionRequest.toProviderIce());
128 auto provider_statusUpdate_ice = provider->end_executeSkill(async);
138 <<
": Found disconnected or buggy skill provider '" << provderId
139 <<
"' during execution. Removing it from skills.";
140 skillProviderMap.erase(it);
144 "Skill execution failed. Could not execute a skill of provider '" +
145 provderId.toString() +
"' because the provider does not exist.");
152 "Skill execution failed. Could not execute a skill of provider '" +
153 provderId.
toString() +
"' because the provider does not exist.");
164 std::unique_lock l(skillProviderMapMutex);
175 if (
auto it = skillProviderMap.find(provderId); it != skillProviderMap.end())
177 const auto& provider = it->second;
181 ARMARX_WARNING << __PRETTY_FUNCTION__ <<
": Found disconnected skill provider '"
182 << provderId <<
"'. Removing it from skills.";
183 skillProviderMap.erase(it);
187 "Skill execution failed. Could not execute a skill of provider '" +
188 provderId.toString() +
"' because the provider does not exist.");
197 .callbackInterface = myPrx};
200 provider->begin_executeSkillAsync(provider_executionRequest.toProviderIce());
202 auto provider_executionID_ice = provider->end_executeSkillAsync(async);
207 executionId.skillId.providerId = provderId;
213 <<
": Found disconnected or buggy skill provider '" << provderId
214 <<
"' during execution. Removing it from skills.";
215 skillProviderMap.erase(it);
219 "Skill execution failed. Could not execute a skill of provider '" +
220 provderId.toString() +
"' because the provider does not exist.");
227 "Skill execution failed. Could not execute a skill of provider '" +
228 provderId.
toString() +
"' because the provider does not exist.");
239 std::unique_lock l(skillProviderMapMutex);
241 it != skillProviderMap.end())
243 const auto& providerId = it->first;
244 const auto& provider = it->second;
248 ARMARX_WARNING << __PRETTY_FUNCTION__ <<
": Found disconnected skill provider '"
249 << providerId <<
"'. Removing it from skills.";
250 skillProviderMap.erase(it);
256 auto async = provider->begin_updateSkillParameters(executionId.
toProviderIce(),
257 data->toAronDictDTO());
259 auto r = provider->end_updateSkillParameters(async);
264 ARMARX_WARNING << __PRETTY_FUNCTION__ <<
": Found buggy skill provider '"
265 << providerId <<
"'. Removing it from skills on next execute.";
281 std::unique_lock l(skillProviderMapMutex);
283 it != skillProviderMap.end())
285 const auto& providerId = it->first;
286 const auto& provider = it->second;
290 ARMARX_WARNING << __PRETTY_FUNCTION__ <<
": Found disconnected skill provider '"
291 << providerId <<
"'. Removing it from skills.";
292 skillProviderMap.erase(it);
298 auto async = provider->begin_abortSkill(executionId.
toProviderIce());
300 auto r = provider->end_abortSkill(async);
305 ARMARX_WARNING << __PRETTY_FUNCTION__ <<
": Found buggy skill provider '"
306 << providerId <<
"'. Removing it from skills on next execute.";
322 std::unique_lock l(skillProviderMapMutex);
324 it != skillProviderMap.end())
326 const auto& providerId = it->first;
327 const auto& provider = it->second;
331 ARMARX_WARNING << __PRETTY_FUNCTION__ <<
": Found disconnected skill provider '"
332 << providerId <<
"'. Removing it from skills.";
333 skillProviderMap.erase(it);
339 auto async = provider->begin_abortSkill(executionId.
toProviderIce());
344 ARMARX_WARNING << __PRETTY_FUNCTION__ <<
": Found buggy skill provider '"
345 << providerId <<
"'. Removing it from skills on next execute.";
355 std::optional<skills::SkillDescription>
360 std::unique_lock l(skillProviderMapMutex);
361 if (
auto it = skillProviderMap.find(*skillId.
providerId); it != skillProviderMap.end())
363 const auto& providerId = it->first;
364 const auto& provider = it->second;
368 ARMARX_WARNING << __PRETTY_FUNCTION__ <<
": Found disconnected skill provider '"
369 << providerId <<
"'. Removing it from skills.";
370 skillProviderMap.erase(it);
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.");
381 auto async = provider->begin_getSkillDescription(skillId.
toProviderIce());
383 auto provider_desc_ice = provider->end_getSkillDescription(async);
385 if (not provider_desc_ice)
398 <<
": Found disconnected or buggy skill provider '" << providerId
399 <<
"' during execution. Removing it from skills.";
400 skillProviderMap.erase(it);
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.");
415 std::map<skills::SkillID, skills::SkillDescription>
418 std::map<skills::SkillID, skills::SkillDescription>
ret;
420 std::scoped_lock l(skillProviderMapMutex);
421 for (
auto it = skillProviderMap.cbegin(); it != skillProviderMap.cend();)
423 const auto& providerId = it->first;
424 const auto& provider = it->second;
428 ARMARX_WARNING << __PRETTY_FUNCTION__ <<
": Found disconnected skill provider '"
429 << providerId <<
"'. Removing it from skills.";
430 it = skillProviderMap.erase(it);
436 skills::provider::dto::SkillDescriptionMap m = provider->getSkillDescriptions();
438 for (
const auto& [provider_skillId_ice, skillDescription_ice] : m)
449 ARMARX_WARNING << __PRETTY_FUNCTION__ <<
": Found buggy skill provider '"
450 << providerId <<
"'. Removing it from skills.";
451 it = skillProviderMap.erase(it);
457 std::optional<skills::SkillStatusUpdate>
464 std::unique_lock l(skillProviderMapMutex);
466 it != skillProviderMap.end())
468 const auto& providerId = it->first;
469 const auto& provider = it->second;
473 ARMARX_WARNING << __PRETTY_FUNCTION__ <<
": Found disconnected skill provider '"
474 << providerId <<
"'. Removing it from skills.";
475 skillProviderMap.erase(it);
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.");
486 auto async = provider->begin_getSkillExecutionStatus(executionId.
toProviderIce());
488 auto provider_statusUpdate_ice = provider->end_getSkillExecutionStatus(async);
490 if (not provider_statusUpdate_ice)
497 provider_statusUpdate_ice.value(), providerId);
503 <<
": Found disconnected or buggy skill provider '" << providerId
504 <<
"' during execution. Removing it from skills.";
505 skillProviderMap.erase(it);
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.");
520 std::map<skills::SkillExecutionID, skills::SkillStatusUpdate>
523 std::map<skills::SkillExecutionID, skills::SkillStatusUpdate>
ret;
525 std::scoped_lock l(skillProviderMapMutex);
526 for (
auto it = skillProviderMap.cbegin(); it != skillProviderMap.cend();)
528 const auto& providerId = it->first;
529 const auto& provider = it->second;
533 ARMARX_WARNING << __PRETTY_FUNCTION__ <<
": Found disconnected skill provider '"
534 << providerId <<
"'. Removing it from skills.";
535 it = skillProviderMap.erase(it);
541 auto m = provider->getSkillExecutionStatuses();
543 for (
const auto& [provider_executionId_ice, provider_statusUpdate_ice] : m)
554 ARMARX_WARNING << __PRETTY_FUNCTION__ <<
": Found buggy skill provider '"
555 << providerId <<
"'. Removing it from skills.";
556 it = skillProviderMap.erase(it);
581 const skills::manager::dto::ProviderID& provider,
588 skills::manager::dto::SkillStatusUpdate
590 const skills::manager::dto::SkillExecutionRequest& info,
597 skills::manager::dto::SkillExecutionID
599 const skills::manager::dto::SkillExecutionRequest& info,
600 const Ice::Current& current)
606 skills::provider::dto::ParameterUpdateResult
608 const skills::manager::dto::SkillExecutionID& info,
610 const Ice::Current& current)
612 skills::provider::dto::ParameterUpdateResult
ret;
619 skills::provider::dto::AbortSkillResult
621 const Ice::Current& current)
623 skills::provider::dto::AbortSkillResult
ret;
629 skills::provider::dto::AbortSkillResult
631 const skills::manager::dto::SkillExecutionID&
id,
632 const Ice::Current& )
634 skills::provider::dto::AbortSkillResult
ret;
642 const skills::provider::dto::SkillStatusUpdate& statusUpdate,
643 const skills::callback::dto::ProviderID& pid,
651 skills::manager::dto::SkillDescriptionMap
654 skills::manager::dto::SkillDescriptionMap
ret;
658 for (
const auto& [k,
v] : m)
660 ret.insert({k.toManagerIce(),
v.toManagerIce()});
666 IceUtil::Optional<skills::manager::dto::SkillDescription>
668 const Ice::Current& current)
674 return o->toManagerIce();
679 IceUtil::Optional<skills::manager::dto::SkillStatusUpdate>
681 const skills::manager::dto::SkillExecutionID& executionId,
682 const Ice::Current& current)
688 return o->toManagerIce();
693 skills::manager::dto::SkillStatusUpdateMap
696 skills::manager::dto::SkillStatusUpdateMap
ret;
700 for (
const auto& [k,
v] : m)
702 ret.insert({k.toManagerIce(),
v.toManagerIce()});