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