otsdaq  v1_01_04
 All Classes Namespaces Functions
XDAQContextConfiguration.h
1 #ifndef _ots_XDAQContextConfiguration_h_
2 #define _ots_XDAQContextConfiguration_h_
3 
4 #include "otsdaq-core/ConfigurationDataFormats/ConfigurationBase.h"
5 #include "otsdaq-core/ConfigurationInterface/ConfigurationManager.h"
6 #include <string>
7 
8 namespace ots
9 {
10 
12 {
13 public:
14 
16  {
17  bool status_;
18  std::string name_, type_, value_;
19  };
20 
22  {
23  std::string applicationGroupID_;
24  std::string applicationUID_;
25  bool status_;
26  std::string class_;
27  unsigned int id_;
28  unsigned int instance_;
29  std::string network_;
30  std::string group_;
31  std::string module_;
32  std::string sourceConfig_;
33 
34  std::vector<XDAQApplicationProperty> properties_;
35  };
36 
37  struct XDAQContext
38  {
39  std::string contextUID_;
40  std::string sourceConfig_;
41  bool status_;
42  unsigned int id_;
43  std::string address_;
44  unsigned int port_;
45  std::vector<XDAQApplication> applications_;
46  };
47 
49  virtual ~XDAQContextConfiguration(void);
50 
51  //Methods
52  void init (ConfigurationManager *configManager);
53  void extractContexts (ConfigurationManager *configManager);
54  void outputXDAQXML (std::ostream &out);
55  //void outputXDAQScript (std::ostream &out);
56  //void outputARTDAQScript (std::ostream &out);
57 
58  std::string getContextUID (const std::string &url) const;
59  std::string getApplicationUID (const std::string &url, unsigned int id) const;
60 
61 
62  const std::vector<XDAQContext> & getContexts () const { return contexts_; }
63 
64 
65  ConfigurationTree getSupervisorConfigNode (ConfigurationManager *configManager, const std::string &contextUID, const std::string &appUID) const;
66 
67  //artdaq specific get methods
68  std::vector<const XDAQContext *> getBoardReaderContexts () const;
69  std::vector<const XDAQContext *> getEventBuilderContexts () const;
70  std::vector<const XDAQContext *> getAggregatorContexts () const;
71  unsigned int getARTDAQAppRank (const std::string &contextUID = "X") const;
72  static bool isARTDAQContext (const std::string &contextUID);
73 
74 private:
75 
76  std::vector<XDAQContext> contexts_;
77  std::vector<unsigned int> artdaqContexts_;
78 
79  std::vector<unsigned int> artdaqBoardReaders_;
80  std::vector<unsigned int> artdaqEventBuilders_;
81  std::vector<unsigned int> artdaqAggregators_;
82 
83 public:
84 
85  //XDAQ Context Column names
86  struct ColContext
87  {
88  std::string const colContextUID_ = "ContextUID";
89  std::string const colLinkToApplicationConfiguration_ = "LinkToApplicationConfiguration";
90  std::string const colLinkToApplicationGroupID_ = "LinkToApplicationGroupID";
91  std::string const colStatus_ = ViewColumnInfo::COL_NAME_STATUS;
92  std::string const colId_ = "Id";
93  std::string const colAddress_ = "Address";
94  std::string const colPort_ = "Port";
95  } colContext_;
96 
97  //XDAQ App Column names
99  {
100  std::string const colApplicationGroupID_ = "ApplicationGroupID";
101  std::string const colApplicationUID_ = "ApplicationUID";
102  std::string const colLinkToSupervisorConfiguration_ = "LinkToSupervisorConfiguration";
103  std::string const colLinkToSupervisorUID_ = "LinkToSupervisorUID";
104  std::string const colStatus_ = ViewColumnInfo::COL_NAME_STATUS;
105  std::string const colClass_ = "Class";
106  std::string const colId_ = "Id";
107  std::string const colInstance_ = "Instance";
108  std::string const colNetwork_ = "Network";
109  std::string const colGroup_ = "Group";
110  std::string const colModule_ = "Module";
111  std::string const colLinkToPropertyConfiguration_ = "LinkToPropertyConfiguration";
112  std::string const colLinkToPropertyGroupID_ = "LinkToPropertyGroupID";
113 
114  } colApplication_;
115 
116  //XDAQ App Property Column names
118  {
119  std::string const colPropertyGroupID_ = "PropertyGroupID";
120  std::string const colPropertyUID_ = "UID";
121  std::string const colStatus_ = ViewColumnInfo::COL_NAME_STATUS;
122  std::string const colPropertyName_ = "PropertyName";
123  std::string const colPropertyType_ = "PropertyType";
124  std::string const colPropertyValue_ = "PropertyValue";
125 
126  } colAppProperty_;
127 
128 };
129 }
130 #endif