Go to the documentation of this file.
7 #include <shared_mutex>
11 #include <boost/uuid/uuid.hpp>
13 #include <SimoxUtility/json/json.hpp>
23 #include <RobotAPI/interface/aron/Aron.h>
24 #include <RobotAPI/interface/skills/SkillManagerInterface.h>
44 class SkillManagerComponentPluginUser;
79 std::optional<skills::SkillStatusUpdate>
96 const std::string& profileId,
97 const std::string& executorName,
113 std::optional<std::vector<std::experimental::observer_ptr<const skills::FluxioSkill>>>
114 deleteSkill(
const std::string& skillId,
const std::string& userId,
bool dryRun);
117 getSkillMutex(
const std::string& skillId,
const std::string& userId);
119 void deleteSkillMutex(
const std::string& skillId,
const std::string& userId);
124 const std::string& parameterId,
125 const std::string& userId,
131 const skills::manager::dto::FluxioParameter& parameter,
132 const std::string& userId,
165 const std::string& providerId,
169 struct FluxioDataCollector
171 std::map<std::string, skills::FluxioSkill>
skills;
172 std::shared_mutex skillsMutex;
174 std::map<std::string, skills::FluxioProfile> profiles;
175 std::shared_mutex profilesMutex;
177 std::map<std::string, skills::FluxioProvider> providers;
178 std::shared_mutex providersMutex;
180 std::map<std::string, std::tuple<std::string, armarx::DateTime>> skillMutexMap;
181 std::shared_mutex skillMutexMapMutex;
182 const std::int64_t mutexTimeout = 30;
184 std::map<std::string, std::unique_ptr<skills::FluxioExecutor>> fluxioExecutors;
185 std::shared_mutex fluxioExecutorsMutex;
187 std::map<std::string, aron::type::ObjectPtr> types;
188 std::shared_mutex typesMutex;
191 FluxioDataCollector fluxioDC = {};
192 [[noreturn]]
void handleExceptionNonLockingThrow(
const char* funcName,
193 const std::exception& e,
195 bool eraseSkillProvider =
true);
198 skills::provider::dti::SkillProviderInterfacePrx>::iterator>
199 handleExceptionNonLocking(
const char* funcName,
200 const std::exception& e,
202 bool eraseSkillProvider =
true);
204 skills::manager::dti::SkillManagerInterfacePrx myPrx;
206 std::mutex skillProviderMapMutex;
207 std::map<skills::ProviderID, skills::provider::dti::SkillProviderInterfacePrx>
210 template <
typename S,
typename T>
211 std::vector<std::experimental::observer_ptr<const T>>
212 convertMapValuesToObserverVector(std::map<S, T>& map);
214 static boost::uuids::uuid
215 createUuidWithString(
const std::string&
str,
216 std::optional<const boost::uuids::uuid> namespaceUUID = std::nullopt);
219 convertAronObjectPtrToFluxioParameters(std::map<std::string, skills::FluxioParameter>&
ret,
222 const boost::uuids::uuid& skillId);
224 template <
typename T>
225 void replaceVectorContent(std::vector<T>& originalVector,
226 const std::vector<T>& replacementVector);
228 bool setEditFluxioSkillMutex(
bool aquireMutex,
229 const std::string& userId,
230 const std::string& skillId);
237 updateFluxioParameter(
238 const std::string& skillId,
239 const std::string& parameterId,
240 const std::string& userId,
242 bool deleteParameter,
243 const std::optional<skills::manager::dto::FluxioParameter>& parameterDT = std::nullopt);
ReaderT::InputType T & ret
This file is part of ArmarX.
A base class for skill exceptions.
void deleteSkillMutex(const std::string &skillId, const std::string &userId)
std::optional< skills::SkillDescription > getSkillDescription(const skills::SkillID &id)
skills::Result< std::vector< skills::FluxioSkillStatusUpdate >, skills::error::FluxioException > getFluxioSkillExecutionStatus(const std::string &executionId)
skills::Result< bool, skills::error::FluxioException > getSkillMutex(const std::string &skillId, const std::string &userId)
std::map< skills::SkillID, skills::SkillDescription > getSkillDescriptions()
skills::Result< std::vector< std::experimental::observer_ptr< const skills::FluxioProfile > >, skills::error::FluxioException > getProfileList()
bool abortSkill(const skills::SkillExecutionID &id)
skills::Result< std::experimental::observer_ptr< skills::FluxioExecutor >, skills::error::FluxioException > executeFluxioSkill(const std::string &skillId, const std::string &profileId, const std::string &executorName, armarx::aron::data::DictPtr parameters=nullptr)
std::optional< std::vector< std::experimental::observer_ptr< const skills::FluxioSkill > > > deleteSkill(const std::string &skillId, const std::string &userId, bool dryRun)
skills::Result< std::experimental::observer_ptr< const skills::FluxioSkill >, skills::error::FluxioException > getSkill(const std::string &id)
skills::SkillStatusUpdate executeSkill(const skills::SkillExecutionRequest &req)
void removeProvider(const skills::ProviderID &id)
This file is part of ArmarX.
client::plugins::ComponentPlugin ComponentPlugin
void preOnConnectComponent() override
bool updateSkillParameters(const skills::SkillExecutionID &id, const aron::data::DictPtr &data)
skills::Result< std::vector< std::experimental::observer_ptr< const skills::FluxioSkill > >, skills::error::FluxioException > deleteSkillParameter(const std::string &skillId, const std::string ¶meterId, const std::string &userId, bool dryRun)
skills::Result< std::experimental::observer_ptr< const skills::FluxioSkill >, skills::error::FluxioException > addSkillToProvider(const std::string &userId, const std::string &providerId, skills::FluxioSkill &&skill)
skills::Result< std::vector< std::experimental::observer_ptr< const skills::FluxioSkill > >, skills::error::FluxioException > getSkillsOfProvider(const std::string &id)
void updateProfile(const skills::FluxioProfile &profile)
std::optional< skills::SkillStatusUpdate > getSkillExecutionStatus(const skills::SkillExecutionID &id)
std::shared_ptr< Dict > DictPtr
skills::Result< std::vector< std::experimental::observer_ptr< const skills::FluxioProvider > >, skills::error::FluxioException > getProviderList()
skills::Result< skills::FluxioProfile, skills::error::FluxioException > getProfile(const std::string &id)
skills::Result< skills::FluxioProfile, skills::error::FluxioException > createProfile(const skills::FluxioProfile &profile)
void preOnInitComponent() override
bool abortSkillAsync(const skills::SkillExecutionID &id)
skills::Result< skills::FluxioProvider, skills::error::FluxioException > getProvider(const std::string &id)
aron::type::ObjectPtr getTypes()
skills::Result< std::experimental::observer_ptr< const skills::FluxioProvider >, skills::error::FluxioException > addFluxioProvider(const std::string &name)
void postCreatePropertyDefinitions(PropertyDefinitionsPtr &properties) override
std::shared_ptr< Object > ObjectPtr
void addProvider(const skills::ProviderInfo &info)
skills::SkillExecutionID executeSkillAsync(const skills::SkillExecutionRequest &req)
skills::Result< std::vector< std::experimental::observer_ptr< const skills::FluxioSkill > >, skills::error::FluxioException > updateSkillParameter(const std::string &skillId, const skills::manager::dto::FluxioParameter ¶meter, const std::string &userId, bool dryRun)
skills::Result< std::vector< std::experimental::observer_ptr< const skills::FluxioSkill > >, skills::error::FluxioException > getSkillList()
skills::ProviderID getFirstProviderNameThatHasSkill(const skills::SkillID &skillid)
This file offers overloads of toIce() and fromIce() functions for STL container types.
void abortFluxioSkill(const std::string &executionId)
std::map< skills::SkillExecutionID, skills::SkillStatusUpdate > getSkillExecutionStatuses()