otsdaq  v2_01_00
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  std::map<std::string /*FSM command*/, uint8_t /*priority*/> stateMachineCommandPriority_;
34 
35  std::vector<XDAQApplicationProperty> properties_;
36  };
37 
38  struct XDAQContext
39  {
40  std::string contextUID_;
41  std::string sourceConfig_;
42  bool status_;
43  unsigned int id_;
44  std::string address_;
45  unsigned int port_;
46  std::vector<XDAQApplication> applications_;
47  };
48 
50  virtual ~XDAQContextConfiguration (void);
51 
52  //Methods
53  void init (ConfigurationManager *configManager);
54  void extractContexts (ConfigurationManager *configManager);
55  void outputXDAQXML (std::ostream &out);
56  //void outputAppPriority (std::ostream &out, const std::string& stateMachineCommand);
57  //void outputXDAQScript (std::ostream &out);
58  //void outputARTDAQScript (std::ostream &out);
59 
60  std::string getContextUID (const std::string &url) const;
61  std::string getApplicationUID (const std::string &url, unsigned int id) const;
62 
63 
64  const std::vector<XDAQContext> & getContexts () const { return contexts_; }
65 
66  ConfigurationTree getContextNode (const ConfigurationManager *configManager, const std::string &contextUID) const;
67  ConfigurationTree getApplicationNode (const ConfigurationManager *configManager, const std::string &contextUID, const std::string &appUID) const;
68  ConfigurationTree getSupervisorConfigNode (const ConfigurationManager *configManager, const std::string &contextUID, const std::string &appUID) const;
69 
70  //artdaq specific get methods
71  std::vector<const XDAQContext *> getBoardReaderContexts () const;
72  std::vector<const XDAQContext *> getEventBuilderContexts () const;
73  std::vector<const XDAQContext *> getAggregatorContexts () const;
74  unsigned int getARTDAQAppRank (const std::string &contextUID = "X") const;
75  std::string getContextAddress (const std::string &contextUID = "X", bool wantHttp = false) const;
76  unsigned int getARTDAQDataPort (const ConfigurationManager *configManager, const std::string &contextUID = "X") const;
77  static bool isARTDAQContext (const std::string &contextUID);
78 
79  private:
80 
81  std::vector<XDAQContext> contexts_;
82 // std::vector<unsigned int> artdaqContexts_;
83 //
84  std::vector<unsigned int> artdaqBoardReaders_;
85  std::vector<unsigned int> artdaqEventBuilders_;
86  std::vector<unsigned int> artdaqAggregators_;
87 
88  public:
89 
90  //XDAQ Context Column names
91  struct ColContext
92  {
93  std::string const colContextUID_ = "ContextUID";
94  std::string const colLinkToApplicationConfiguration_ = "LinkToApplicationConfiguration";
95  std::string const colLinkToApplicationGroupID_ = "LinkToApplicationGroupID";
96  std::string const colStatus_ = ViewColumnInfo::COL_NAME_STATUS;
97  std::string const colId_ = "Id";
98  std::string const colAddress_ = "Address";
99  std::string const colPort_ = "Port";
100  //std::string const colARTDAQDataPort_ = "ARTDAQDataPort";
101  } colContext_;
102 
103  //XDAQ App Column names
105  {
106  std::string const colApplicationGroupID_ = "ApplicationGroupID";
107  std::string const colApplicationUID_ = "ApplicationUID";
108  std::string const colLinkToSupervisorConfiguration_ = "LinkToSupervisorConfiguration";
109  std::string const colLinkToSupervisorUID_ = "LinkToSupervisorUID";
110  std::string const colStatus_ = ViewColumnInfo::COL_NAME_STATUS;
111  std::string const colClass_ = "Class";
112  std::string const colId_ = "Id";
113  std::string const colInstance_ = "Instance";
114  std::string const colNetwork_ = "Network";
115  std::string const colGroup_ = "Group";
116  std::string const colModule_ = "Module";
117  std::string const colConfigurePriority_ = "ConfigurePriority";
118  std::string const colStartPriority_ = "StartPriority";
119  std::string const colStopPriority_ = "StopPriority";
120  std::string const colLinkToPropertyConfiguration_ = "LinkToPropertyConfiguration";
121  std::string const colLinkToPropertyGroupID_ = "LinkToPropertyGroupID";
122 
123  } colApplication_;
124 
125  //XDAQ App Property Column names
127  {
128  std::string const colPropertyGroupID_ = "PropertyGroupID";
129  std::string const colPropertyUID_ = "UID";
130  std::string const colStatus_ = ViewColumnInfo::COL_NAME_STATUS;
131  std::string const colPropertyName_ = "PropertyName";
132  std::string const colPropertyType_ = "PropertyType";
133  std::string const colPropertyValue_ = "PropertyValue";
134 
135  } colAppProperty_;
136 
137  static const std::string ARTDAQ_OFFSET_PORT;
138 
139  public:
140  static const std::set<std::string> FETypeClassNames_, DMTypeClassNames_, LogbookTypeClassNames_, MacroMakerTypeClassNames_, ChatTypeClassNames_, ConsoleTypeClassNames_, ConfigurationGUITypeClassNames_;
141  static const std::string GATEWAY_SUPERVISOR_CLASS, WIZARD_SUPERVISOR_CLASS, DEPRECATED_SUPERVISOR_CLASS;
142  };
143 }
144 #endif