otsdaq  v2_03_00
XDAQContextTable.h
1 #ifndef _ots_XDAQContextTable_h_
2 #define _ots_XDAQContextTable_h_
3 
4 #include <string>
5 
6 #include "otsdaq-core/ConfigurationInterface/ConfigurationManager.h"
7 #include "otsdaq-core/TableCore/TableBase.h"
8 
9 namespace ots
10 {
12 {
13  public:
15  {
16  bool status_;
17  std::string name_, type_, value_;
18  };
19 
21  {
22  static const uint8_t DEFAULT_PRIORITY;
23 
24  std::string applicationGroupID_;
25  std::string applicationUID_;
26  bool status_;
27  std::string class_;
28  unsigned int id_;
29  unsigned int instance_;
30  std::string network_;
31  std::string group_;
32  std::string module_;
33  std::string sourceConfig_;
34  std::map<std::string /*FSM command*/, uint8_t /*priority*/>
35  stateMachineCommandPriority_;
36 
37  std::vector<XDAQApplicationProperty> properties_;
38  };
39 
40  struct XDAQContext
41  {
42  std::string contextUID_;
43  std::string sourceConfig_;
44  bool status_;
45  unsigned int id_;
46  std::string address_;
47  unsigned int port_;
48  std::vector<XDAQApplication> applications_;
49  };
50 
51  XDAQContextTable(void);
52  virtual ~XDAQContextTable(void);
53 
54  // Methods
55  void init(ConfigurationManager* configManager);
56  void extractContexts(ConfigurationManager* configManager);
57  void outputXDAQXML(std::ostream& out);
58  // void outputAppPriority (std::ostream &out,
59  // const std::string& stateMachineCommand); void outputXDAQScript (std::ostream
60  // &out); void outputARTDAQScript (std::ostream &out);
61 
62  std::string getContextUID(const std::string& url) const;
63  std::string getApplicationUID(const std::string& url, unsigned int id) const;
64 
65  const std::vector<XDAQContext>& getContexts() const { return contexts_; }
66 
67  ConfigurationTree getContextNode(const ConfigurationManager* configManager,
68  const std::string& contextUID) const;
69  ConfigurationTree getApplicationNode(const ConfigurationManager* configManager,
70  const std::string& contextUID,
71  const std::string& appUID) const;
72  ConfigurationTree getSupervisorConfigNode(const ConfigurationManager* configManager,
73  const std::string& contextUID,
74  const std::string& appUID) const;
75 
76  // artdaq specific get methods
77  std::vector<const XDAQContext*> getBoardReaderContexts() const;
78  std::vector<const XDAQContext*> getEventBuilderContexts() const;
79  std::vector<const XDAQContext*> getAggregatorContexts() const;
80  unsigned int getARTDAQAppRank(const std::string& contextUID = "X") const;
81  std::map<std::string /*contextUID*/,
82  std::pair<std::string /*host_name*/, unsigned int /*rank*/>>
83  getARTDAQAppRankMap() const;
84  std::string getContextAddress(const std::string& contextUID = "X",
85  bool wantHttp = false) const;
86  unsigned int getARTDAQDataPort(const ConfigurationManager* configManager,
87  const std::string& contextUID = "X") const;
88  static bool isARTDAQContext(const std::string& contextUID);
89 
90  private:
91  std::vector<XDAQContext> contexts_;
92  // std::vector<unsigned int> artdaqContexts_;
93  //
94  std::vector<unsigned int> artdaqBoardReaders_;
95  std::vector<unsigned int> artdaqEventBuilders_;
96  std::vector<unsigned int> artdaqAggregators_;
97 
98  public:
99  // XDAQ Context Column names
100  struct ColContext
101  {
102  std::string const colContextUID_ = "ContextUID";
103  std::string const colLinkToApplicationTable_ = "LinkToApplicationTable";
104  std::string const colLinkToApplicationGroupID_ = "LinkToApplicationGroupID";
105  std::string const colStatus_ = TableViewColumnInfo::COL_NAME_STATUS;
106  std::string const colId_ = "Id";
107  std::string const colAddress_ = "Address";
108  std::string const colPort_ = "Port";
109  // std::string const colARTDAQDataPort_ = "ARTDAQDataPort";
110  } colContext_;
111 
112  // XDAQ App Column names
114  {
115  std::string const colApplicationGroupID_ = "ApplicationGroupID";
116  std::string const colApplicationUID_ = "ApplicationUID";
117  std::string const colLinkToSupervisorTable_ = "LinkToSupervisorTable";
118  std::string const colLinkToSupervisorUID_ = "LinkToSupervisorUID";
119  std::string const colStatus_ = TableViewColumnInfo::COL_NAME_STATUS;
120  std::string const colClass_ = "Class";
121  std::string const colId_ = "Id";
122  std::string const colInstance_ = "Instance";
123  std::string const colNetwork_ = "Network";
124  std::string const colGroup_ = "Group";
125  std::string const colModule_ = "Module";
126  std::string const colConfigurePriority_ = "ConfigurePriority";
127  std::string const colStartPriority_ = "StartPriority";
128  std::string const colStopPriority_ = "StopPriority";
129  std::string const colLinkToPropertyTable_ = "LinkToPropertyTable";
130  std::string const colLinkToPropertyGroupID_ = "LinkToPropertyGroupID";
131 
132  } colApplication_;
133 
134  // XDAQ App Property Column names
136  {
137  std::string const colPropertyGroupID_ = "PropertyGroupID";
138  std::string const colPropertyUID_ = "UID";
139  std::string const colStatus_ = TableViewColumnInfo::COL_NAME_STATUS;
140  std::string const colPropertyName_ = "PropertyName";
141  std::string const colPropertyType_ = "PropertyType";
142  std::string const colPropertyValue_ = "PropertyValue";
143 
144  } colAppProperty_;
145 
146  static const std::string ARTDAQ_OFFSET_PORT;
147 
148  public:
149  static const std::set<std::string> FETypeClassNames_, DMTypeClassNames_,
150  LogbookTypeClassNames_, MacroMakerTypeClassNames_, ChatTypeClassNames_,
151  ConsoleTypeClassNames_, ConfigurationGUITypeClassNames_;
152  static const std::string GATEWAY_SUPERVISOR_CLASS, WIZARD_SUPERVISOR_CLASS,
153  DEPRECATED_SUPERVISOR_CLASS;
154 };
155 } // namespace ots
156 #endif
void outputXDAQXML(std::ostream &out)