otsdaq  v1_01_02
 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:
15  {
16  std::string applicationGroupID_;
17  std::string applicationUID_;
18  bool status_;
19  std::string class_;
20  unsigned int id_;
21  unsigned int instance_;
22  std::string network_;
23  std::string group_;
24  std::string module_;
25  std::string sourceConfig_;
26  };
27 
28  struct XDAQContext
29  {
30  std::string contextUID_;
31  std::string sourceConfig_;
32  bool status_;
33  unsigned int id_;
34  std::string address_;
35  unsigned int port_;
36  std::vector<XDAQApplication> applications_;
37  };
38 
40  virtual ~XDAQContextConfiguration(void);
41 
42  //Methods
43  void init (ConfigurationManager *configManager);
44  void extractContexts (ConfigurationManager *configManager);
45  void outputXDAQXML (std::ostream &out);
46  //void outputXDAQScript (std::ostream &out);
47  //void outputARTDAQScript (std::ostream &out);
48 
49  std::string getContextUID (const std::string &url) const;
50  std::string getApplicationUID (const std::string &url, unsigned int id) const;
51 
52 
53  const std::vector<XDAQContext> & getContexts () { return contexts_; }
54 
55 
56  ConfigurationTree getSupervisorConfigNode (ConfigurationManager *configManager, const std::string &contextUID, const std::string &appUID) const;
57 
58  //artdaq specific get methods
59  std::vector<const XDAQContext *> getBoardReaderContexts () const;
60  std::vector<const XDAQContext *> getEventBuilderContexts () const;
61  std::vector<const XDAQContext *> getAggregatorContexts () const;
62  unsigned int getARTDAQAppRank (const std::string &contextUID = "X") const;
63  static bool isARTDAQContext (const std::string &contextUID);
64 
65 private:
66 
67  std::vector<XDAQContext> contexts_;
68  std::vector<unsigned int> artdaqContexts_;
69 
70  std::vector<unsigned int> artdaqBoardReaders_;
71  std::vector<unsigned int> artdaqEventBuilders_;
72  std::vector<unsigned int> artdaqAggregators_;
73 
74 public:
75 
76  //XDAQ Context Column names
77  struct ColContext
78  {
79  std::string const colContextUID_ = "ContextUID";
80  std::string const colLinkToApplicationConfiguration_ = "LinkToApplicationConfiguration";
81  std::string const colLinkToApplicationGroupID_ = "LinkToApplicationGroupID";
82  std::string const colStatus_ = "Status";
83  std::string const colId_ = "Id";
84  std::string const colAddress_ = "Address";
85  std::string const colPort_ = "Port";
86  } colContext_;
87 
88  //XDAQ App Column names
90  {
91  std::string const colApplicationGroupID_ = "ApplicationGroupID";
92  std::string const colApplicationUID_ = "ApplicationUID";
93  std::string const colLinkToSupervisorConfiguration_ = "LinkToSupervisorConfiguration";
94  std::string const colLinkToSupervisorUID_ = "LinkToSupervisorUID";
95  std::string const colStatus_ = "Status";
96  std::string const colClass_ = "Class";
97  std::string const colId_ = "Id";
98  std::string const colInstance_ = "Instance";
99  std::string const colNetwork_ = "Network";
100  std::string const colGroup_ = "Group";
101  std::string const colModule_ = "Module";
102  } colApplication_;
103 };
104 }
105 #endif