FluxioSkill.h
Go to the documentation of this file.
1#pragma once
2
3#include <list>
4#include <memory>
5#include <optional>
6#include <string>
7
9
10#include <RobotAPI/interface/aron/Aron.h>
11#include <RobotAPI/interface/skills/SkillManagerInterface.h>
12#include <RobotAPI/libraries/skills/core/aron/FluxioIdentificator.aron.generated.h>
13#include <RobotAPI/libraries/skills/core/aron/FluxioNode.aron.generated.h>
14#include <RobotAPI/libraries/skills/core/aron/FluxioSkill.aron.generated.h>
15
16#include "FluxioEdge.h"
17#include "FluxioNode.h"
18#include "FluxioParameter.h"
19#include "FluxioProvider.h"
20
21namespace armarx
22{
23 namespace skills
24 {
26 {
27 std::string id;
28 std::string name;
29 std::string description;
30 /**
31 * @brief How long (in ms) to wait for the skill to finish execution before timing out. A negative value indicates no timeout (default).
32 */
34 std::string lastChanged;
36 false; // TODO: change from explicit to implicit storing of executable state
37 bool native = true;
39 std::map<std::string, FluxioParameter> parameters;
40 std::map<const std::string, const std::unique_ptr<FluxioNode>> nodes;
41 std::list<FluxioEdge> edges;
42
43 FluxioSkill(const FluxioSkill&) = delete;
46 FluxioSkill() = default;
47
48 std::optional<manager::dto::FluxioSkill> toManagerIce() const;
49 std::optional<aron::data::dto::DictPtr> toAronDTO() const;
50 std::optional<manager::arondto::FluxioSkill> toAronXml() const;
51 manager::dto::FluxioIdentificator toFluxioIdentificatorIce() const;
52 manager::arondto::FluxioIdentificator toFluxioIdentificatorAron() const;
53 bool updateFromIce(const manager::dto::FluxioSkill& i,
54 std::map<std::string, FluxioProvider>& providersMap,
55 std::map<std::string, FluxioProfile>& profilesMap,
56 std::map<std::string, FluxioSkill>& skillsMap,
57 std::map<std::string, aron::type::ObjectPtr>& typesMap);
59 std::map<std::string, FluxioProvider>& providersMap,
60 std::map<std::string, FluxioProfile>& profilesMap,
61 std::map<std::string, FluxioSkill>& skillsMap,
62 std::map<std::string, aron::type::ObjectPtr>& typesMap);
63 void deleteParameter(const std::string& parameterId);
64 void removeParameterNodesAndEdges(const std::string& parameterId,
65 bool keepParameterNodes = false);
66 void removeSubSkillNodesAndEdges(const std::string& skillId);
67 void removeEdgesConnectedToParameter(const std::string& parameterId);
68
70 FromFluxioIdentificatorIce(const manager::dto::FluxioIdentificator& i,
71 std::map<std::string, FluxioSkill>& skillsMap);
73 FromFluxioIdentificatorAron(const manager::arondto::FluxioIdentificator& i,
74 std::map<std::string, FluxioSkill>& skillsMap);
75 static std::unique_ptr<FluxioSkill>
76 FromIce(const manager::dto::FluxioSkill& i,
77 std::map<std::string, FluxioProvider>& providersMap,
78 std::map<std::string, FluxioProfile>& profilesMap,
79 std::map<std::string, FluxioSkill>& skillsMap,
80 std::map<std::string, aron::type::ObjectPtr>& typesMap);
81 static std::unique_ptr<FluxioSkill>
83 std::map<std::string, FluxioProvider>& providersMap,
84 std::map<std::string, FluxioProfile>& profilesMap,
85 std::map<std::string, FluxioSkill>& skillsMap,
86 std::map<std::string, aron::type::ObjectPtr>& typesMap);
87 static std::unique_ptr<skills::FluxioNode>
88 CreateNode(const manager::dto::FluxioNode& i,
89 std::map<std::string, FluxioParameter>& parametersMap,
90 std::map<std::string, FluxioSkill>& skillsMap,
91 std::map<std::string, FluxioProfile>& profilesMap,
92 std::map<std::string, aron::type::ObjectPtr>& typesMap,
93 std::map<const std::string, const std::unique_ptr<FluxioNode>>& nodesMap);
94 static std::unique_ptr<skills::FluxioNode>
95 CreateNode(const manager::arondto::FluxioNode& i,
96 std::map<std::string, FluxioParameter>& parametersMap,
97 std::map<std::string, FluxioSkill>& skillsMap,
98 std::map<std::string, FluxioProfile>& profilesMap,
99 std::map<std::string, aron::type::ObjectPtr>& typesMap,
100 std::map<const std::string, const std::unique_ptr<FluxioNode>>& nodesMap);
101 };
102 } // namespace skills
103} // namespace armarx
static Duration MilliSeconds(std::int64_t milliSeconds)
Constructs a duration in milliseconds.
Definition Duration.cpp:48
Represents a duration.
Definition Duration.h:17
::IceInternal::Handle< Dict > DictPtr
This file is part of ArmarX.
This file offers overloads of toIce() and fromIce() functions for STL container types.
manager::arondto::FluxioIdentificator toFluxioIdentificatorAron() const
FluxioSkill(const FluxioSkill &)=delete
void deleteParameter(const std::string &parameterId)
FluxioSkill(FluxioSkill &&)=default
bool updateFromAron(const aron::data::dto::DictPtr &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)
armarx::Duration timeout
How long (in ms) to wait for the skill to finish execution before timing out.
Definition FluxioSkill.h:33
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 std::unique_ptr< FluxioSkill > FromAron(const aron::data::dto::DictPtr &d, 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)
std::optional< manager::arondto::FluxioSkill > toAronXml() const
std::map< std::string, FluxioParameter > parameters
Definition FluxioSkill.h:39
std::list< FluxioEdge > edges
Definition FluxioSkill.h:41
void removeEdgesConnectedToParameter(const std::string &parameterId)
bool updateFromIce(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)
std::map< const std::string, const std::unique_ptr< FluxioNode > > nodes
Definition FluxioSkill.h:40
static std::experimental::observer_ptr< const FluxioSkill > FromFluxioIdentificatorIce(const manager::dto::FluxioIdentificator &i, std::map< std::string, FluxioSkill > &skillsMap)
std::optional< aron::data::dto::DictPtr > toAronDTO() const
void removeSubSkillNodesAndEdges(const std::string &skillId)
static std::experimental::observer_ptr< const FluxioSkill > FromFluxioIdentificatorAron(const manager::arondto::FluxioIdentificator &i, std::map< std::string, FluxioSkill > &skillsMap)
std::optional< manager::dto::FluxioSkill > toManagerIce() const
FluxioSkill & operator=(const FluxioSkill &)=delete
manager::dto::FluxioIdentificator toFluxioIdentificatorIce() const
static std::unique_ptr< skills::FluxioNode > CreateNode(const manager::dto::FluxioNode &i, std::map< std::string, FluxioParameter > &parametersMap, std::map< std::string, FluxioSkill > &skillsMap, std::map< std::string, FluxioProfile > &profilesMap, std::map< std::string, aron::type::ObjectPtr > &typesMap, std::map< const std::string, const std::unique_ptr< FluxioNode > > &nodesMap)
void removeParameterNodesAndEdges(const std::string &parameterId, bool keepParameterNodes=false)
std::experimental::observer_ptr< const FluxioProvider > skillProviderPtr
Definition FluxioSkill.h:38