8#include <boost/uuid/uuid_io.hpp>
10#include <Ice/Exception.h>
11#include <Ice/OutputStream.h>
12#include <IceUtil/Exception.h>
13#include <IceUtil/Optional.h>
15#include <nlohmann/json.hpp>
20#include <ArmarXCore/interface/core/time.h>
29#include <RobotAPI/interface/aron/Aron.h>
30#include <RobotAPI/interface/skills/SkillManagerInterface.h>
32#include <RobotAPI/libraries/skills/core/aron/FluxioProfile.aron.generated.h>
33#include <RobotAPI/libraries/skills/core/aron/FluxioSkill.aron.generated.h>
47 this->plugin->addProvider(i);
48 std::string providerId = boost::uuids::to_string(
49 armarx::plugins::SkillManagerComponentPlugin::createUuidWithString(
50 info.providerId.providerName));
51 std::optional<std::vector<skills::manager::arondto::FluxioSkill>> opt =
56 ARMARX_ERROR <<
"Failed to load composite skills for provider "
57 << info.providerId.providerName;
61 for (
const auto& skill : opt.value())
69 const skills::manager::dto::ProviderID& provider,
73 this->plugin->removeProvider(i);
76 skills::manager::dto::SkillStatusUpdate
78 const skills::manager::dto::SkillExecutionRequest& info,
82 return this->plugin->executeSkill(e).toManagerIce();
85 skills::manager::dto::SkillExecutionID
87 const skills::manager::dto::SkillExecutionRequest& info,
88 const Ice::Current& current)
91 return this->plugin->executeSkillAsync(e).toManagerIce();
94 skills::provider::dto::ParameterUpdateResult
96 const skills::manager::dto::SkillExecutionID& info,
98 const Ice::Current& current)
100 skills::provider::dto::ParameterUpdateResult ret;
103 ret.success = this->plugin->updateSkillParameters(e, a);
107 skills::provider::dto::AbortSkillResult
109 const Ice::Current& current)
111 skills::provider::dto::AbortSkillResult ret;
113 ret.success = this->plugin->abortSkill(i);
117 skills::provider::dto::AbortSkillResult
119 const skills::manager::dto::SkillExecutionID&
id,
120 const Ice::Current& )
122 skills::provider::dto::AbortSkillResult ret;
124 ret.success = this->plugin->abortSkillAsync(i);
128 std::vector<skills::provider::dto::AbortSkillResult>
133 std::vector<skills::provider::dto::AbortSkillResult> results;
135 skills::manager::dto::SkillStatusUpdateMap executions;
150 for (
auto& [executionId,
status] : executions)
153 if (
status.status != armarx::skills::core::dto::Execution::Aborted and
154 status.status != armarx::skills::core::dto::Execution::Failed)
157 results.push_back(this->
abortSkill(executionId, current));
163 std::vector<skills::provider::dto::AbortSkillResult>
167 std::vector<skills::provider::dto::AbortSkillResult> results;
169 skills::manager::dto::SkillStatusUpdateMap executions;
184 for (
auto& [executionId,
status] : executions)
187 if (
status.status != armarx::skills::core::dto::Execution::Aborted and
188 status.status != armarx::skills::core::dto::Execution::Failed)
199 const skills::provider::dto::SkillStatusUpdate& statusUpdate,
200 const skills::callback::dto::ProviderID& pid,
208 skills::manager::dto::SkillDescriptionMap
211 skills::manager::dto::SkillDescriptionMap ret;
213 auto m = this->plugin->getSkillDescriptions();
215 for (
const auto& [k, v] : m)
217 ret.insert({k.toManagerIce(), v.toManagerIce()});
223 IceUtil::Optional<skills::manager::dto::SkillDescription>
225 const Ice::Current& current)
228 auto o = this->plugin->getSkillDescription(e);
231 return o->toManagerIce();
236 IceUtil::Optional<skills::manager::dto::SkillStatusUpdate>
238 const skills::manager::dto::SkillExecutionID& executionId,
239 const Ice::Current& current)
242 auto o = this->plugin->getSkillExecutionStatus(e);
245 return o->toManagerIce();
250 skills::manager::dto::SkillStatusUpdateMap
253 skills::manager::dto::SkillStatusUpdateMap ret;
255 auto m = this->plugin->getSkillExecutionStatuses();
257 for (
const auto& [k, v] : m)
259 ret.insert({k.toManagerIce(), v.toManagerIce()});
269 aron::type::dto::AronObjectPtr
272 const auto& res = this->plugin->getTypes();
273 return res->toAronObjectDTO();
276 IceUtil::Optional<std::string>
278 const std::string& profileId,
279 const Ice::Current& current)
281 const auto& res = this->plugin->executeFluxioSkill(skillId, profileId,
"Fluxio");
282 if (!res.isSuccess())
284 auto e = res.getError();
285 e.addToContext(std::nullopt,
"SkillManagerComponentPluginUser", __FUNCTION__, __LINE__);
286 throw e.toManagerIce();
288 if (res.getResult() ==
nullptr)
290 auto e = res.getError();
291 e.addToContext(std::nullopt,
"SkillManagerComponentPluginUser", __FUNCTION__, __LINE__);
292 throw e.toManagerIce();
295 return res.getResult()->id;
298 IceUtil::Optional<std::string>
300 const std::string& executionArgs,
303 const auto delimiterPos = skillId.find(
'/');
304 const auto providerName = skillId.substr(0, delimiterPos);
305 const auto skillName = skillId.substr(delimiterPos + 1);
308 const auto& providerId =
309 armarx::plugins::SkillManagerComponentPlugin::createUuidWithString(providerName);
311 const auto&
id = armarx::plugins::SkillManagerComponentPlugin::createUuidWithString(
312 skillName, providerId);
314 const auto& idStr = boost::uuids::to_string(
id);
316 nlohmann::json json = nlohmann::json::parse(executionArgs);
323 for (
const auto& key : aronData->getAllKeys())
325 const auto& seed = key +
"isInput";
326 const auto& keyUuid = boost::uuids::to_string(
327 armarx::plugins::SkillManagerComponentPlugin::createUuidWithString(seed,
id));
328 const auto& value = aronData->getElement(key);
329 if (value ==
nullptr)
333 updatedAronData->addElement(keyUuid, value->cloneAsVariant());
337 this->plugin->executeFluxioSkill(idStr,
"root",
"Fluxio", updatedAronData);
339 if (!res.isSuccess())
341 auto e = res.getError();
342 e.addToContext(std::nullopt,
"SkillManagerComponentPluginUser", __FUNCTION__, __LINE__);
343 throw e.toManagerIce();
345 if (res.getResult() ==
nullptr)
347 auto e = res.getError();
348 e.addToContext(std::nullopt,
"SkillManagerComponentPluginUser", __FUNCTION__, __LINE__);
349 throw e.toManagerIce();
352 return res.getResult()->id;
357 const Ice::Current& current)
359 this->plugin->abortFluxioSkill(executionId);
362 IceUtil::Optional<skills::manager::dto::FluxioSkillStatusUpdateList>
364 const Ice::Current& current)
366 auto l = this->plugin->getFluxioSkillExecutionStatus(executionId);
371 auto e = l.getError();
372 e.addToContext(std::nullopt,
"SkillManagerComponentPluginUser", __FUNCTION__, __LINE__);
373 throw e.toManagerIce();
376 skills::manager::dto::FluxioSkillStatusUpdateList ret;
378 for (
const auto& s : l.getResult())
380 ret.push_back(s.toManagerIce());
386 skills::manager::dto::FluxioSkillList
389 skills::manager::dto::FluxioSkillList ret;
391 auto l = this->plugin->getSkillList();
395 auto e = l.getError();
396 e.addToContext(std::nullopt,
"SkillManagerComponentPluginUser", __FUNCTION__, __LINE__);
397 throw e.toManagerIce();
400 for (
const auto& s : l.getResult())
408 const auto& skill = s->toManagerIce();
410 if (!skill.has_value())
412 ARMARX_WARNING <<
"Skill with id " << s->id <<
" could not be converted";
416 ret.push_back(skill.value());
422 IceUtil::Optional<skills::manager::dto::FluxioSkill>
425 auto result = this->plugin->getSkill(
id);
427 if (!result.isSuccess())
429 auto e = result.getError();
430 e.addToContext(std::nullopt,
"SkillManagerComponentPluginUser", __FUNCTION__, __LINE__);
431 throw e.toManagerIce();
433 const auto& skill = result.getResult();
434 if (skill ==
nullptr)
439 const auto& s = skill->toManagerIce();
451 const skills::manager::dto::FluxioSkill& skill,
452 const Ice::Current& current)
454 std::scoped_lock l(this->plugin->fluxioDC.skillsMutex,
455 this->plugin->fluxioDC.profilesMutex,
456 this->plugin->fluxioDC.providersMutex,
457 this->plugin->fluxioDC.typesMutex);
458 auto& skillsMap = this->plugin->fluxioDC.skills;
459 auto& providersMap = this->plugin->fluxioDC.providers;
460 auto& profilesMap = this->plugin->fluxioDC.profiles;
461 auto& typesMap = this->plugin->fluxioDC.types;
462 const auto& s = skillsMap.find(skill.id);
465 if (s == skillsMap.end())
472 auto res = this->plugin->getSkillMutex(skill.id, userId);
473 if (!res.isSuccess())
475 ARMARX_WARNING <<
"User " << userId <<
"User does not have Mutex for this Skill"
478 auto error = res.getError();
481 "SkillManagerComponentPluginUser",
484 throw error.toManagerIce();
488 s->second.updateFromIce(skill, providersMap, profilesMap, skillsMap, typesMap);
490 std::optional<skills::manager::arondto::FluxioSkill> opt = s->second.toAronXml();
492 if (!opt.has_value())
494 ARMARX_WARNING <<
"Skill with id " << skill.id <<
" could not be converted";
505 const std::string& userId,
506 const std::string& skillId,
507 const skills::manager::dto::FluxioParameterList& parameters,
508 const Ice::Current& current)
511 for (
const auto& param : parameters)
517 ARMARX_WARNING <<
"Parameter value of param " << param.id <<
" and skill "
518 << skillId <<
" could not be converted";
529 const std::string& userId,
530 const std::string& skillId,
531 const std::string& parameterId,
532 const skills::manager::dto::FluxioValueList& values,
533 const Ice::Current& current)
535 std::scoped_lock l(this->plugin->fluxioDC.skillsMutex,
536 this->plugin->fluxioDC.profilesMutex);
537 auto& skillsMap = this->plugin->fluxioDC.skills;
538 auto& profilesMap = this->plugin->fluxioDC.profiles;
541 const auto& skill = skillsMap.find(skillId);
543 if (skill == skillsMap.end())
550 auto res = this->plugin->getSkillMutex(skillId, userId);
551 if (!res.isSuccess())
553 ARMARX_WARNING <<
"User " << userId <<
"User does not have Mutex for this Skill"
556 auto error = res.getError();
559 "SkillManagerComponentPluginUser",
562 throw error.toManagerIce();
566 const auto& p = skill->second.parameters.find(parameterId);
567 if (p == skill->second.parameters.end())
569 ARMARX_WARNING <<
"Parameter with id " << parameterId <<
" not found in skill with id "
575 p->second.updateValuesFromIce(values, profilesMap);
579 IceUtil::Optional<skills::manager::dto::FluxioIdentificatorList>
581 const std::string& userId,
583 const Ice::Current& current)
585 skills::manager::dto::FluxioIdentificatorList ret;
588 res = this->plugin->getSkill(skillId);
596 std::optional<skills::manager::arondto::FluxioSkill> opt = skillptr->toAronXml();
597 if (!opt.has_value())
599 ARMARX_WARNING <<
"Skill with id " << skillId <<
" could not be converted";
602 skills::manager::arondto::FluxioSkill skill = opt.value();
604 auto l = this->plugin->deleteSkill(skillId, userId, dryRun);
611 for (
const auto& s : l.value())
618 ret.push_back(s->toFluxioIdentificatorIce());
623 skill.deleted =
true;
632 const std::string& userId,
633 const Ice::Current& current)
635 return this->plugin->getSkillMutex(skillId, userId).getResult();
640 const std::string& userId,
641 const Ice::Current& current)
643 this->plugin->deleteSkillMutex(skillId, userId);
646 IceUtil::Optional<skills::manager::dto::FluxioIdentificatorList>
648 const std::string& parameterId,
649 const std::string& userId,
651 const Ice::Current& current)
653 skills::manager::dto::FluxioIdentificatorList ret;
654 auto res = this->plugin->deleteSkillParameter(skillId, parameterId, userId, dryRun);
656 if (!res.isSuccess())
658 throw res.getError().toManagerIce();
661 for (
const auto& s : res.getResult())
668 ret.push_back(s->toFluxioIdentificatorIce());
674 IceUtil::Optional<skills::manager::dto::FluxioIdentificatorList>
676 const std::string& skillId,
677 const skills::manager::dto::FluxioParameter& parameter,
678 const std::string& userId,
680 const Ice::Current& current)
682 skills::manager::dto::FluxioIdentificatorList ret;
683 auto res = this->plugin->updateSkillParameter(skillId, parameter, userId, dryRun);
685 if (!res.isSuccess())
687 throw res.getError().toManagerIce();
690 for (
const auto& s : res.getResult())
697 ret.push_back(s->toFluxioIdentificatorIce());
703 skills::manager::dto::FluxioProfileList
706 skills::manager::dto::FluxioProfileList ret;
708 auto l = this->plugin->getProfileList();
710 for (
const auto& p : l.getResult())
717 ret.push_back(p->toManagerIce());
723 IceUtil::Optional<skills::manager::dto::FluxioProfile>
726 auto profile = this->plugin->getProfile(
id);
728 if (!profile.isSuccess())
730 auto e = profile.getError();
731 e.addToContext(std::nullopt,
"SkillManagerComponentPluginUser", __FUNCTION__, __LINE__);
732 throw e.toManagerIce();
734 return profile.getResult().toManagerIce();
737 skills::manager::dto::FluxioProfile
739 const skills::manager::dto::FluxioProfile& profile,
740 const Ice::Current& current)
742 std::unique_lock l(this->plugin->fluxioDC.profilesMutex);
743 auto& profilesMap = this->plugin->fluxioDC.profiles;
757 const skills::manager::dto::FluxioProfile& profile,
758 const Ice::Current& current)
760 std::unique_lock l(this->plugin->fluxioDC.profilesMutex);
761 auto& profilesMap = this->plugin->fluxioDC.profiles;
767 skills::manager::dto::FluxioProviderList
770 skills::manager::dto::FluxioProviderList ret;
772 auto l = this->plugin->getProviderList();
775 auto e = l.getError();
776 e.addToContext(std::nullopt,
"SkillManagerComponentPluginUser", __FUNCTION__, __LINE__);
777 throw e.toManagerIce();
780 for (
const auto& p : l.getResult())
787 ret.push_back(p->toManagerIce());
793 IceUtil::Optional<skills::manager::dto::FluxioProvider>
796 auto provider = this->plugin->getProvider(
id);
798 if (provider.isSuccess())
800 auto e = provider.getError();
801 e.addToContext(std::nullopt,
"SkillManagerComponentPluginUser", __FUNCTION__, __LINE__);
802 throw e.toManagerIce();
804 return provider.getResult().toManagerIce();
807 IceUtil::Optional<skills::manager::dto::FluxioSkillList>
809 const Ice::Current& current)
811 skills::manager::dto::FluxioSkillList ret;
813 auto l = this->plugin->getSkillsOfProvider(
id);
817 auto error = l.getError();
819 std::nullopt,
"SkillManagerComponentPluginUser", __FUNCTION__, __LINE__);
820 throw error.toManagerIce();
823 for (
const auto& s : l.getResult())
831 const auto& skill = s->toManagerIce();
833 if (!skill.has_value())
836 <<
"SkillManagerComponentPluginUser::getSkillsOfProvider: Skill with id "
837 << s->id <<
" could not be converted";
841 ret.push_back(skill.value());
847 IceUtil::Optional<skills::manager::dto::FluxioSkill>
849 const std::string& userId,
850 const std::string& providerId,
851 const skills::manager::dto::FluxioSkill& skill,
852 const Ice::Current& current)
854 std::unique_lock skillsLock(this->plugin->fluxioDC.skillsMutex, std::defer_lock);
855 std::unique_lock profilesLock(this->plugin->fluxioDC.profilesMutex, std::defer_lock);
856 std::unique_lock providersLock(this->plugin->fluxioDC.providersMutex, std::defer_lock);
857 std::unique_lock typesLock(this->plugin->fluxioDC.typesMutex, std::defer_lock);
858 std::lock(skillsLock, profilesLock, providersLock, typesLock);
860 auto& skillsMap = this->plugin->fluxioDC.skills;
861 auto& providersMap = this->plugin->fluxioDC.providers;
862 auto& profilesMap = this->plugin->fluxioDC.profiles;
863 auto& typesMap = this->plugin->fluxioDC.types;
867 if (skillBO ==
nullptr)
869 ARMARX_WARNING <<
"Skill with id " << skill.id <<
" could not be converted";
875 "SkillManagerComponentPluginUser",
882 profilesLock.unlock();
883 providersLock.unlock();
886 auto& skillReleased = *skillBO.release();
888 this->plugin->addSkillToProvider(userId, providerId, std::move(skillReleased));
889 if (!res.isSuccess())
892 <<
" could not be added to provider with id " << providerId;
894 auto error = res.getError();
897 {skill.id, providerId})),
898 "SkillManagerComponentPluginUser",
901 throw error.toManagerIce();
904 const auto& s = res.getResult();
909 <<
" could not be added to provider with id " << providerId;
913 const auto& ret = s->toManagerIce();
914 if (!ret.has_value())
916 ARMARX_WARNING <<
"Skill with id " << skill.id <<
" could not be converted";
920 const std::optional<skills::manager::arondto::FluxioSkill> aronSkill = s->toAronXml();
922 if (!aronSkill.has_value())
924 ARMARX_WARNING <<
"Skill with id " << skill.id <<
" could not be converted to Aron";
939 std::optional<std::vector<skills::manager::arondto::FluxioSkill>>
946 std::optional<std::vector<skills::manager::arondto::FluxioSkill>>
955 const skills::manager::arondto::FluxioProfile& profile)
960 std::optional<std::vector<skills::manager::arondto::FluxioProfile>>
PluginT * addPlugin(const std::string prefix="", ParamsT &&... params)
bool getSkillMutex(const std::string &skillId, const std::string &userId, const Ice::Current ¤t) override
IceUtil::Optional< skills::manager::dto::FluxioProvider > getProvider(const std::string &id, const Ice::Current ¤t) override
virtual std::optional< std::vector< skills::manager::arondto::FluxioSkill > > loadCompositeSkillsOfProvider(const std::string &providerId)
void removeProvider(const skills::manager::dto::ProviderID &provider, const Ice::Current ¤t) override
void updateProfile(const skills::manager::dto::FluxioProfile &profile, const Ice::Current ¤t) override
void addProvider(const skills::manager::dto::ProviderInfo &providerInfo, const Ice::Current ¤t) override
virtual void addProfile(const skills::manager::arondto::FluxioProfile &profile)
aron::type::dto::AronObjectPtr getTypes(const Ice::Current ¤t) override
skills::manager::dto::SkillStatusUpdateMap getSkillExecutionStatuses(const Ice::Current ¤t) override
skills::manager::dto::SkillExecutionID executeSkillAsync(const skills::manager::dto::SkillExecutionRequest &skillExecutionRequest, const Ice::Current ¤t) override
IceUtil::Optional< skills::manager::dto::SkillDescription > getSkillDescription(const skills::manager::dto::SkillID &id, const Ice::Current ¤t) override
virtual void saveSkill(const skills::manager::arondto::FluxioSkill &skill)
virtual std::optional< std::vector< skills::manager::arondto::FluxioSkill > > loadCompositeSkills()
bool updateSkillParameterValues(const std::string &userId, const std::string &skillId, const std::string ¶meterId, const skills::manager::dto::FluxioValueList &values, const Ice::Current ¤t) override
IceUtil::Optional< skills::manager::dto::FluxioSkill > getSkill(const std::string &id, const Ice::Current ¤t) override
skills::manager::dto::FluxioProfileList getProfileList(const Ice::Current ¤t) override
IceUtil::Optional< std::string > executeFluxioSkillLegacy(const std::string &skillId, const std::string &executionArgs, const Ice::Current ¤t) override
IceUtil::Optional< skills::manager::dto::FluxioIdentificatorList > updateSkillParameter(const std::string &skillId, const skills::manager::dto::FluxioParameter ¶meter, const std::string &userId, bool dryRun, const Ice::Current ¤t) override
bool updateSkillValues(const std::string &userId, const std::string &skillId, const skills::manager::dto::FluxioParameterList ¶meters, const Ice::Current ¤t) override
SkillManagerComponentPluginUser()
IceUtil::Optional< std::string > executeFluxioSkill(const std::string &skillId, const std::string &profileId, const Ice::Current ¤t) override
void updateStatusForSkill(const skills::provider::dto::SkillStatusUpdate &update, const skills::callback::dto::ProviderID &id, const Ice::Current ¤t) override
skills::manager::dto::SkillDescriptionMap getSkillDescriptions(const Ice::Current ¤t) override
void deleteSkillMutex(const std::string &skillId, const std::string &userId, const Ice::Current ¤t) override
IceUtil::Optional< skills::manager::dto::FluxioIdentificatorList > deleteSkillParameter(const std::string &skillId, const std::string ¶meterId, const std::string &userId, bool dryRun, const Ice::Current ¤t) override
skills::manager::dto::SkillStatusUpdate executeSkill(const skills::manager::dto::SkillExecutionRequest &info, const Ice::Current ¤t) override
IceUtil::Optional< skills::manager::dto::FluxioProfile > getProfile(const std::string &id, const Ice::Current ¤t) override
void abortFluxioSkill(const std::string &executionId, const Ice::Current ¤t) override
bool updateSkill(const std::string &userId, const skills::manager::dto::FluxioSkill &skill, const Ice::Current ¤t) override
IceUtil::Optional< skills::manager::dto::SkillStatusUpdate > getSkillExecutionStatus(const skills::manager::dto::SkillExecutionID &executionId, const Ice::Current ¤t) override
IceUtil::Optional< skills::manager::dto::FluxioSkillStatusUpdateList > getFluxioSkillExecutionStatus(const std::string &executionId, const Ice::Current ¤t) override
skills::provider::dto::AbortSkillResult abortSkill(const skills::manager::dto::SkillExecutionID &id, const Ice::Current ¤t) override
IceUtil::Optional< skills::manager::dto::FluxioIdentificatorList > deleteSkill(const std::string &skillId, const std::string &userId, bool dryRun, const Ice::Current ¤t) override
skills::manager::dto::FluxioProfile createProfile(const skills::manager::dto::FluxioProfile &profile, const Ice::Current ¤t) override
skills::manager::dto::FluxioProviderList getProviderList(const Ice::Current ¤t) override
skills::provider::dto::AbortSkillResult abortSkillAsync(const skills::manager::dto::SkillExecutionID &id, const Ice::Current ¤t) override
std::vector< skills::provider::dto::AbortSkillResult > abortAllSkills(const Ice::Current ¤t) override
skills::provider::dto::ParameterUpdateResult updateSkillParameters(const skills::manager::dto::SkillExecutionID &executionId, const aron::data::dto::DictPtr ¶ms, const Ice::Current ¤t) override
std::vector< skills::provider::dto::AbortSkillResult > abortAllSkillsAsync(const Ice::Current ¤t) override
IceUtil::Optional< skills::manager::dto::FluxioSkillList > getSkillsOfProvider(const std::string &id, const Ice::Current ¤t) override
virtual std::optional< std::vector< skills::manager::arondto::FluxioProfile > > loadProfiles()
skills::manager::dto::FluxioSkillList getSkillList(const Ice::Current ¤t) override
IceUtil::Optional< skills::manager::dto::FluxioSkill > addSkillToProvider(const std::string &userId, const std::string &providerId, const skills::manager::dto::FluxioSkill &skill, const Ice::Current ¤t) override
static PointerType FromAronDictDTO(const data::dto::DictPtr &aron)
static data::DictPtr ConvertFromNlohmannJSONObject(const nlohmann::json &, const armarx::aron::Path &p={})
static ProviderID FromIce(const manager::dto::ProviderID &)
static ProviderInfo FromIce(const manager::dto::ProviderInfo &)
static SkillExecutionRequest FromIce(const manager::dto::SkillExecutionRequest &)
static SkillID FromIce(const manager::dto::SkillID &)
A base class for skill exceptions.
static FluxioException create(const std::string &message, const FluxioExceptionType &type, const std::string &className, const char *function, int line)
#define ARMARX_IMPORTANT
The logging level for always important information, but expected behaviour (in contrast to ARMARX_WAR...
#define ARMARX_ERROR
The logging level for unexpected behaviour, that must be fixed.
#define ARMARX_WARNING
The logging level for unexpected behaviour, but not a serious problem.
::IceInternal::Handle< Dict > DictPtr
std::shared_ptr< Dict > DictPtr
std::string createErrorMessage(ErrorCode code, const std::vector< std::string > &args)
This file offers overloads of toIce() and fromIce() functions for STL container types.
manager::dto::FluxioProfile toManagerIce() const
manager::arondto::FluxioProfile toManagerAron() const
static FluxioProfile FromIce(const manager::dto::FluxioProfile &i, std::map< std::string, FluxioProfile > &profilesMap)
static std::unique_ptr< FluxioSkill > FromIce(const manager::dto::FluxioSkill &i, std::map< std::string, FluxioProvider > &providersMap, std::map< std::string, FluxioProfile > &profilesMap, std::map< std::string, FluxioSkill > &skillsMap, std::map< std::string, aron::type::ObjectPtr > &typesMap)
static SkillExecutionID FromIce(const skills::manager::dto::SkillExecutionID &)