3 #include <experimental/memory>
4 #include <shared_mutex>
10 #include <RobotAPI/interface/skills/SkillManagerInterface.h>
20 class SkillProviderComponentPluginUser;
28 using ComponentPlugin::ComponentPlugin;
44 template <
class SkillT,
typename... Args>
50 auto fac = skills::SkillBlueprint::ForSkill<SkillT>(std::forward<Args>(args)...);
51 auto* facPtr = fac.get();
56 template <
typename FactoryT,
typename... Args>
58 requires skills::isSkillBlueprint<FactoryT>
62 auto fac = std::make_unique<FactoryT>(std::forward<Args>(args)...);
63 auto* facPtr = fac.get();
65 return static_cast<FactoryT*
>(facPtr);
69 std::optional<skills::SkillStatusUpdate>
71 std::map<skills::SkillExecutionID, skills::SkillStatusUpdate>
93 skills::manager::dti::SkillManagerInterfacePrx manager;
94 skills::provider::dti::SkillProviderInterfacePrx myPrx;
96 mutable std::shared_mutex skillFactoriesMutex;
97 std::map<skills::SkillID, std::unique_ptr<skills::SkillBlueprint>> skillFactories;
99 mutable std::shared_mutex skillExecutionsMutex;
100 std::map<skills::SkillExecutionID, skills::detail::SkillRuntime> skillExecutions;
111 virtual public skills::provider::dti::SkillProviderInterface
117 IceUtil::Optional<skills::provider::dto::SkillDescription>
119 const Ice::Current& current = Ice::Current())
override;
121 skills::provider::dto::SkillDescriptionMap
124 IceUtil::Optional<skills::provider::dto::SkillStatusUpdate>
126 const Ice::Current& current = Ice::Current())
override;
128 skills::provider::dto::SkillStatusUpdateMap
131 skills::provider::dto::SkillStatusUpdate
132 executeSkill(
const skills::provider::dto::SkillExecutionRequest& executionInfo,
133 const Ice::Current& current = Ice::Current())
override;
135 skills::provider::dto::SkillExecutionID
136 executeSkillAsync(
const skills::provider::dto::SkillExecutionRequest& executionInfo,
137 const Ice::Current& current = Ice::Current())
override;
139 skills::provider::dto::ParameterUpdateResult
142 const Ice::Current& current = Ice::Current())
override;
144 skills::provider::dto::AbortSkillResult
145 abortSkill(
const skills::provider::dto::SkillExecutionID& skill,
146 const Ice::Current& current = Ice::Current())
override;
148 skills::provider::dto::AbortSkillResult
150 const Ice::Current& current = Ice::Current())
override;
164 auto ret = plugin->addSkillFactory(desc, f);
168 template <
class SkillT,
typename... Args>
174 return plugin->addSkillFactory<SkillT>(std::forward<Args>(args)...);
177 template <
typename FacT,
typename... Args>
179 requires skills::isSkillBlueprint<FacT>
183 return plugin->addCustomSkillFactory<FacT>(std::forward<Args>(args)...);