3#include <experimental/memory>
11#include <Ice/Current.h>
12#include <IceUtil/Optional.h>
19#include <RobotAPI/interface/aron/Aron.h>
20#include <RobotAPI/interface/skills/SkillManagerInterface.h>
21#include <RobotAPI/interface/skills/SkillProviderInterface.h>
43 using ComponentPlugin::ComponentPlugin;
59 template <
class SkillT,
typename... Args>
66 auto* facPtr = fac.get();
71 template <
typename FactoryT,
typename... Args>
77 auto fac = std::make_unique<FactoryT>(std::forward<Args>(args)...);
78 auto* facPtr = fac.get();
80 return static_cast<FactoryT*
>(facPtr);
84 std::optional<skills::SkillStatusUpdate>
86 std::map<skills::SkillExecutionID, skills::SkillStatusUpdate>
106 const skills::manager::dti::SkillManagerInterfacePrx&
skillManager()
const;
112 skills::manager::dti::SkillManagerInterfacePrx manager;
113 skills::provider::dti::SkillProviderInterfacePrx myPrx;
115 mutable std::shared_mutex skillFactoriesMutex;
116 std::map<skills::SkillID, std::unique_ptr<skills::SkillBlueprint>> skillFactories;
124 mutable std::shared_mutex skillExecutionsMutex;
125 std::map<skills::SkillExecutionID, std::shared_ptr<skills::detail::SkillRuntime>>
133 std::vector<std::shared_ptr<skills::detail::SkillRuntime>>
134 collectFinishedExecutions_locked();
145 virtual public skills::provider::dti::SkillProviderInterface
151 IceUtil::Optional<skills::provider::dto::SkillDescription>
153 const Ice::Current& current = Ice::Current())
override;
155 skills::provider::dto::SkillDescriptionMap
158 IceUtil::Optional<skills::provider::dto::SkillStatusUpdate>
160 const Ice::Current& current = Ice::Current())
override;
162 skills::provider::dto::SkillStatusUpdateMap
165 skills::provider::dto::SkillStatusUpdate
166 executeSkill(
const skills::provider::dto::SkillExecutionRequest& executionInfo,
167 const Ice::Current& current = Ice::Current())
override;
169 skills::provider::dto::SkillExecutionID
170 executeSkillAsync(
const skills::provider::dto::SkillExecutionRequest& executionInfo,
171 const Ice::Current& current = Ice::Current())
override;
173 skills::provider::dto::ParameterUpdateResult
176 const Ice::Current& current = Ice::Current())
override;
178 skills::provider::dto::AbortSkillResult
179 abortSkill(
const skills::provider::dto::SkillExecutionID& skill,
180 const Ice::Current& current = Ice::Current())
override;
182 skills::provider::dto::AbortSkillResult
184 const Ice::Current& current = Ice::Current())
override;
186 void reportSkillEvent(
const skills::provider::dto::SkillStatusUpdate& statusUpdate,
187 const std::string& providerName,
188 const Ice::Current& current)
override;
202 auto ret = plugin->addSkillFactory(desc, f);
206 template <
class SkillT,
typename... Args>
212 return plugin->addSkillFactory<SkillT>(std::forward<Args>(args)...);
215 template <
typename FacT,
typename... Args>
221 return plugin->addCustomSkillFactory<FacT>(std::forward<Args>(args)...);
ManagedIceObject(ManagedIceObject const &other)
IceUtil::Optional< skills::provider::dto::SkillStatusUpdate > getSkillExecutionStatus(const skills::provider::dto::SkillExecutionID &executionId, const Ice::Current ¤t=Ice::Current()) override
FacT * addCustomSkillFactory(Args &&... args)
skills::provider::dto::SkillStatusUpdateMap getSkillExecutionStatuses(const Ice::Current ¤t=Ice::Current()) override
SkillProviderComponentPluginUser()
skills::provider::dto::AbortSkillResult abortSkill(const skills::provider::dto::SkillExecutionID &skill, const Ice::Current ¤t=Ice::Current()) override
IceUtil::Optional< skills::provider::dto::SkillDescription > getSkillDescription(const skills::provider::dto::SkillID &skill, const Ice::Current ¤t=Ice::Current()) override
skills::provider::dto::SkillStatusUpdate executeSkill(const skills::provider::dto::SkillExecutionRequest &executionInfo, const Ice::Current ¤t=Ice::Current()) override
skills::provider::dto::SkillExecutionID executeSkillAsync(const skills::provider::dto::SkillExecutionRequest &executionInfo, const Ice::Current ¤t=Ice::Current()) override
skills::provider::dto::AbortSkillResult abortSkillAsync(const skills::provider::dto::SkillExecutionID &skill, const Ice::Current ¤t=Ice::Current()) override
const std::experimental::observer_ptr< plugins::SkillProviderComponentPlugin > & getSkillProviderPlugin() const
void reportSkillEvent(const skills::provider::dto::SkillStatusUpdate &statusUpdate, const std::string &providerName, const Ice::Current ¤t) override
skills::SkillBlueprint * addSkillFactory(const skills::SkillDescription &desc, const skills::LambdaSkill::FunctionType &f)
skills::provider::dto::ParameterUpdateResult updateSkillParameters(const skills::provider::dto::SkillExecutionID &executionId, const armarx::aron::data::dto::DictPtr ¶meters, const Ice::Current ¤t=Ice::Current()) override
skills::SkillBlueprint * addSkillFactory(Args &&... args)
skills::provider::dto::SkillDescriptionMap getSkillDescriptions(const Ice::Current ¤t=Ice::Current()) override
skills::SkillExecutionID executeSkillAsync(const skills::SkillExecutionRequest &executionInfo)
bool abortSkill(const skills::SkillExecutionID &execId)
skills::SkillStatusUpdate executeSkill(const skills::SkillExecutionRequest &executionInfo)
std::optional< skills::SkillStatusUpdate > getSkillExecutionStatus(const skills::SkillExecutionID &) const
void preOnInitComponent() override
std::optional< skills::SkillDescription > getSkillDescription(const skills::SkillID &) const
void preOnConnectComponent() override
void postOnConnectComponent() override
void postCreatePropertyDefinitions(PropertyDefinitionsPtr &properties) override
FactoryT * addCustomSkillFactory(Args &&... args)
const skills::manager::dti::SkillManagerInterfacePrx & skillManager() const
std::map< skills::SkillExecutionID, skills::SkillStatusUpdate > getSkillExecutionStatuses() const
void addSkillFactory(std::unique_ptr< skills::SkillBlueprint > &&)
bool updateSkillParameters(const skills::SkillExecutionID &id, const armarx::aron::data::DictPtr ¶ms)
std::map< skills::SkillID, skills::SkillDescription > getSkillDescriptions() const
void preOnDisconnectComponent() override
void updateSubSkillStatus(const skills::SkillStatusUpdate &statusUpdate)
skills::SkillBlueprint * addSkillFactory(Args &&... args)
bool abortSkillAsync(const skills::SkillExecutionID &execId)
std::function< TerminatedSkillStatus()> FunctionType
static std::unique_ptr< SkillBlueprint > ForSkill(Args &&... args)
::IceInternal::Handle< Dict > DictPtr
std::shared_ptr< Dict > DictPtr
This file is part of ArmarX.
This file offers overloads of toIce() and fromIce() functions for STL container types.
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.