DDS  ver. 3.4
TopoTask.h
Go to the documentation of this file.
1 // Copyright 2014 GSI, Inc. All rights reserved.
2 //
3 //
4 //
5 
6 #ifndef __DDS__TopoTask__
7 #define __DDS__TopoTask__
8 
9 // DDS
10 #include "TopoDef.h"
11 #include "TopoElement.h"
12 #include "TopoProperty.h"
13 #include "TopoRequirement.h"
14 #include "TopoTrigger.h"
15 // STD
16 #include <memory>
17 #include <string>
18 // BOOST
19 #include <boost/iterator/filter_iterator.hpp>
20 
21 namespace dds
22 {
23  namespace topology_api
24  {
25  class CTopoTask : public CTopoElement
26  {
27  public:
28  using Ptr_t = std::shared_ptr<CTopoTask>;
29  using PtrVector_t = std::vector<CTopoTask::Ptr_t>;
30 
32  CTopoTask(const std::string& _name);
33 
35  virtual ~CTopoTask();
36 
38  const std::string& getExe() const;
39  const std::string& getEnv() const;
40  bool isExeReachable() const;
41  bool isEnvReachable() const;
42  size_t getNofProperties() const;
43  size_t getNofRequirements() const;
44  size_t getNofTriggers() const;
49  CTopoProperty::Ptr_t getProperty(const std::string& _id) const;
50 
52  void setExe(const std::string& _exe);
53  void setEnv(const std::string& _env);
54  void setExeReachable(bool _exeReachable);
55  void setEnvReachable(bool _envReachable);
56  CTopoProperty::Ptr_t addProperty(const std::string& _name);
57  CTopoRequirement::Ptr_t addRequirement(const std::string& _name);
58  CTopoTrigger::Ptr_t addTrigger(const std::string& _name);
59 
60  // Parent collection and group ID
61  std::string getParentCollectionId() const;
62  std::string getParentGroupId() const;
63 
65  size_t getTotalCounter() const;
66 
68  virtual size_t getNofTasks() const;
69 
71  virtual size_t getTotalNofTasks() const;
72 
74  virtual void initFromPropertyTree(const boost::property_tree::ptree& _pt);
75 
77  virtual void saveToPropertyTree(boost::property_tree::ptree& _pt);
78 
81  virtual std::string toString() const;
82 
86  friend std::ostream& operator<<(std::ostream& _strm, const CTopoTask& _task);
87 
89  virtual std::string hashString() const;
90 
91  private:
92  std::string m_exe;
93  std::string m_env;
94  bool m_exeReachable{ true };
95  bool m_envReachable{ true };
96  CTopoProperty::PtrMap_t m_properties;
97  CTopoRequirement::PtrVector_t m_requirements;
98  CTopoTrigger::PtrVector_t m_triggers;
99  };
100 
102  {
103  typedef std::map<Id_t, STopoRuntimeTask> Map_t;
104  typedef std::function<bool(std::pair<Id_t, const STopoRuntimeTask&>)> Condition_t;
105  typedef boost::filter_iterator<STopoRuntimeTask::Condition_t, STopoRuntimeTask::Map_t::const_iterator>
107  typedef std::pair<STopoRuntimeTask::FilterIterator_t, STopoRuntimeTask::FilterIterator_t>
109 
111  : m_task(nullptr)
112  , m_taskIndex(0)
113  , m_collectionIndex(std::numeric_limits<uint32_t>::max())
114  , m_taskPath()
115  , m_taskCollectionId(0)
116  {
117  }
119  size_t m_taskIndex;
121  std::string m_taskPath;
123  };
124  } // namespace topology_api
125 } // namespace dds
126 #endif /* defined(__DDS__TopoTask__) */
const CTopoRequirement::PtrVector_t & getRequirements() const
Definition: TopoTask.cpp:139
std::shared_ptr< CTopoRequirement > Ptr_t
Definition: TopoRequirement.h:31
std::shared_ptr< CTopoProperty > Ptr_t
Definition: TopoProperty.h:38
size_t getNofTriggers() const
Definition: TopoTask.cpp:116
virtual std::string toString() const
Returns string representation of an object.
Definition: TopoTask.cpp:248
Definition: TopoTask.h:25
virtual void initFromPropertyTree(const boost::property_tree::ptree &_pt)
Inherited from TopoElement.
Definition: TopoTask.cpp:165
size_t m_collectionIndex
Definition: TopoTask.h:120
std::string getParentGroupId() const
Definition: TopoTask.cpp:154
size_t getTotalCounter() const
If parent is a group than return N, else return 1.
Definition: TopoTask.cpp:121
std::function< bool(std::pair< Id_t, const STopoRuntimeTask & >)> Condition_t
Definition: TopoTask.h:104
virtual size_t getTotalNofTasks() const
Inherited from DDSTopoElement.
Definition: TopoTask.cpp:81
CTopoProperty::Ptr_t addProperty(const std::string &_name)
Definition: TopoTask.cpp:52
std::string getParentCollectionId() const
Definition: TopoTask.cpp:149
CTopoProperty::Ptr_t getProperty(const std::string &_id) const
Get property by ID. If property not fount than return nullptr.
Definition: TopoTask.cpp:126
boost::filter_iterator< STopoRuntimeTask::Condition_t, STopoRuntimeTask::Map_t::const_iterator > FilterIterator_t
Definition: TopoTask.h:106
const CTopoTrigger::PtrVector_t & getTriggers() const
Definition: TopoTask.cpp:144
std::string m_taskPath
Definition: TopoTask.h:121
std::shared_ptr< CTopoBase > Ptr_t
Definition: TopoBase.h:36
Definition: TopoTask.h:101
void setExe(const std::string &_exe)
Modifiers.
Definition: TopoTask.cpp:32
std::shared_ptr< CTopoTask > Ptr_t
Definition: TopoTask.h:28
bool isExeReachable() const
Definition: TopoTask.cpp:96
Id_t m_taskCollectionId
Definition: TopoTask.h:122
std::map< std::string, CTopoProperty::Ptr_t > PtrMap_t
Definition: TopoProperty.h:40
virtual size_t getNofTasks() const
Inherited from DDSTopoElement.
Definition: TopoTask.cpp:76
size_t getNofProperties() const
Definition: TopoTask.cpp:106
uint64_t Id_t
Definition: TopoDef.h:15
std::map< Id_t, STopoRuntimeTask > Map_t
Definition: TopoTask.h:103
virtual ~CTopoTask()
Destructor.
Definition: TopoTask.cpp:28
Definition: TopoElement.h:18
friend std::ostream & operator<<(std::ostream &_strm, const CTopoTask &_task)
Operator << for convenient output to ostream.
Definition: AgentConnectionManager.h:13
virtual void saveToPropertyTree(boost::property_tree::ptree &_pt)
Inherited from TopoElement.
Definition: TopoTask.cpp:210
std::vector< CTopoBase::Ptr_t > PtrVector_t
Definition: TopoBase.h:37
const CTopoProperty::PtrMap_t & getProperties() const
Definition: TopoTask.cpp:134
virtual std::string hashString() const
Inherited from TopoBase.
Definition: TopoTask.cpp:265
void setExeReachable(bool _exeReachable)
Definition: TopoTask.cpp:42
const std::string & getExe() const
Accessors.
Definition: TopoTask.cpp:86
std::vector< CTopoTrigger::Ptr_t > PtrVector_t
Definition: TopoTrigger.h:36
STopoRuntimeTask()
Definition: TopoTask.h:110
bool isEnvReachable() const
Definition: TopoTask.cpp:101
CTopoRequirement::Ptr_t addRequirement(const std::string &_name)
Definition: TopoTask.cpp:60
std::shared_ptr< CTopoTrigger > Ptr_t
Definition: TopoTrigger.h:35
CTopoTrigger::Ptr_t addTrigger(const std::string &_name)
Definition: TopoTask.cpp:68
size_t m_taskIndex
Definition: TopoTask.h:119
CTopoTask::Ptr_t m_task
Definition: TopoTask.h:118
void setEnvReachable(bool _envReachable)
Definition: TopoTask.cpp:47
std::pair< STopoRuntimeTask::FilterIterator_t, STopoRuntimeTask::FilterIterator_t > FilterIteratorPair_t
Definition: TopoTask.h:108
size_t getNofRequirements() const
Definition: TopoTask.cpp:111
const std::string & getEnv() const
Definition: TopoTask.cpp:91
void setEnv(const std::string &_env)
Definition: TopoTask.cpp:37
std::vector< CTopoRequirement::Ptr_t > PtrVector_t
Definition: TopoRequirement.h:32
CTopoTask(const std::string &_name)
Constructor.
Definition: TopoTask.cpp:22