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 
21 namespace armarx
22 {
23  namespace skills
24  {
25  struct FluxioSkill
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;
35  bool executable =
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;
44  FluxioSkill& operator=(const FluxioSkill&) = delete;
45  FluxioSkill(FluxioSkill&&) = default;
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  static std::unique_ptr<skills::FluxioNode>
94  CreateNode(const manager::arondto::FluxioNode& i,
95  std::map<std::string, FluxioParameter>& parametersMap,
96  std::map<std::string, FluxioSkill>& skillsMap,
97  std::map<std::string, FluxioProfile>& profilesMap,
98  std::map<std::string, aron::type::ObjectPtr>& typesMap);
99  };
100  } // namespace skills
101 } // namespace armarx
armarx::skills::FluxioSkill::description
std::string description
Definition: FluxioSkill.h:29
armarx::skills::FluxioSkill
Definition: FluxioSkill.h:25
armarx::skills::FluxioSkill::nodes
std::map< const std::string, const std::unique_ptr< FluxioNode > > nodes
Definition: FluxioSkill.h:40
skills
This file is part of ArmarX.
armarx::skills::FluxioSkill::id
std::string id
Definition: FluxioSkill.h:27
FluxioProvider.h
armarx::skills::FluxioSkill::FromFluxioIdentificatorIce
static std::experimental::observer_ptr< const FluxioSkill > FromFluxioIdentificatorIce(const manager::dto::FluxioIdentificator &i, std::map< std::string, FluxioSkill > &skillsMap)
Definition: FluxioSkill.cpp:485
Duration.h
armarx::skills::FluxioSkill::toFluxioIdentificatorIce
manager::dto::FluxioIdentificator toFluxioIdentificatorIce() const
Definition: FluxioSkill.cpp:107
std::experimental::fundamentals_v2::observer_ptr
Definition: ManagedIceObject.h:53
armarx::skills::FluxioSkill::removeParameterNodesAndEdges
void removeParameterNodesAndEdges(const std::string &parameterId, bool keepParameterNodes=false)
Definition: FluxioSkill.cpp:357
IceInternal::Handle
Definition: forward_declarations.h:8
armarx::skills::FluxioSkill::removeEdgesConnectedToParameter
void removeEdgesConnectedToParameter(const std::string &parameterId)
Definition: FluxioSkill.cpp:465
armarx::skills::FluxioSkill::deleteParameter
void deleteParameter(const std::string &parameterId)
Definition: FluxioSkill.cpp:410
armarx::skills::FluxioSkill::executable
bool executable
Definition: FluxioSkill.h:35
armarx::skills::FluxioSkill::removeSubSkillNodesAndEdges
void removeSubSkillNodesAndEdges(const std::string &skillId)
Definition: FluxioSkill.cpp:417
armarx::skills::FluxioSkill::toAronXml
std::optional< manager::arondto::FluxioSkill > toAronXml() const
Definition: FluxioSkill.cpp:769
FluxioParameter.h
armarx::skills::FluxioSkill::toAronDTO
std::optional< aron::data::dto::DictPtr > toAronDTO() const
Definition: FluxioSkill.cpp:842
FluxioEdge.h
armarx::skills::FluxioSkill::FromIce
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)
Definition: FluxioSkill.cpp:515
armarx::skills::FluxioSkill::skillProviderPtr
std::experimental::observer_ptr< const FluxioProvider > skillProviderPtr
Definition: FluxioSkill.h:38
armarx::skills::FluxioSkill::FromFluxioIdentificatorAron
static std::experimental::observer_ptr< const FluxioSkill > FromFluxioIdentificatorAron(const manager::arondto::FluxioIdentificator &i, std::map< std::string, FluxioSkill > &skillsMap)
Definition: FluxioSkill.cpp:500
armarx::skills::FluxioSkill::timeout
armarx::Duration timeout
How long (in ms) to wait for the skill to finish execution before timing out.
Definition: FluxioSkill.h:33
armarx::skills::FluxioSkill::updateFromAron
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)
Definition: FluxioSkill.cpp:238
armarx::skills::FluxioSkill::toFluxioIdentificatorAron
manager::arondto::FluxioIdentificator toFluxioIdentificatorAron() const
Definition: FluxioSkill.cpp:118
armarx::skills::FluxioSkill::updateFromIce
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)
Definition: FluxioSkill.cpp:129
armarx::skills::FluxioSkill::native
bool native
Definition: FluxioSkill.h:37
armarx::core::time::Duration
Represents a duration.
Definition: Duration.h:16
armarx::skills::FluxioSkill::lastChanged
std::string lastChanged
Definition: FluxioSkill.h:34
armarx::skills::FluxioSkill::FromAron
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)
Definition: FluxioSkill.cpp:585
armarx::skills::FluxioSkill::FluxioSkill
FluxioSkill()=default
armarx::skills::FluxioSkill::CreateNode
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)
Definition: FluxioSkill.cpp:665
armarx::skills::FluxioSkill::toManagerIce
std::optional< manager::dto::FluxioSkill > toManagerIce() const
Definition: FluxioSkill.cpp:35
armarx::skills::FluxioSkill::edges
std::list< FluxioEdge > edges
Definition: FluxioSkill.h:41
armarx::skills::FluxioSkill::name
std::string name
Definition: FluxioSkill.h:28
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
FluxioNode.h
armarx::core::time::Duration::MilliSeconds
static Duration MilliSeconds(std::int64_t milliSeconds)
Constructs a duration in milliseconds.
Definition: Duration.cpp:48
armarx::skills::FluxioSkill::operator=
FluxioSkill & operator=(const FluxioSkill &)=delete
armarx::skills::FluxioSkill::parameters
std::map< std::string, FluxioParameter > parameters
Definition: FluxioSkill.h:39