$treeview $search $mathjax $extrastylesheet
otsdaq
v2_03_00
$projectbrief
|
$projectbrief
|
$searchbox |
00001 #ifndef _ots_XDAQContextTable_h_ 00002 #define _ots_XDAQContextTable_h_ 00003 00004 #include <string> 00005 00006 #include "otsdaq-core/ConfigurationInterface/ConfigurationManager.h" 00007 #include "otsdaq-core/TableCore/TableBase.h" 00008 00009 namespace ots 00010 { 00011 class XDAQContextTable : public TableBase 00012 { 00013 public: 00014 struct XDAQApplicationProperty 00015 { 00016 bool status_; 00017 std::string name_, type_, value_; 00018 }; 00019 00020 struct XDAQApplication 00021 { 00022 static const uint8_t DEFAULT_PRIORITY; 00023 00024 std::string applicationGroupID_; 00025 std::string applicationUID_; 00026 bool status_; 00027 std::string class_; 00028 unsigned int id_; 00029 unsigned int instance_; 00030 std::string network_; 00031 std::string group_; 00032 std::string module_; 00033 std::string sourceConfig_; 00034 std::map<std::string /*FSM command*/, uint8_t /*priority*/> 00035 stateMachineCommandPriority_; 00036 00037 std::vector<XDAQApplicationProperty> properties_; 00038 }; 00039 00040 struct XDAQContext 00041 { 00042 std::string contextUID_; 00043 std::string sourceConfig_; 00044 bool status_; 00045 unsigned int id_; 00046 std::string address_; 00047 unsigned int port_; 00048 std::vector<XDAQApplication> applications_; 00049 }; 00050 00051 XDAQContextTable(void); 00052 virtual ~XDAQContextTable(void); 00053 00054 // Methods 00055 void init(ConfigurationManager* configManager); 00056 void extractContexts(ConfigurationManager* configManager); 00057 void outputXDAQXML(std::ostream& out); 00058 // void outputAppPriority (std::ostream &out, 00059 // const std::string& stateMachineCommand); void outputXDAQScript (std::ostream 00060 // &out); void outputARTDAQScript (std::ostream &out); 00061 00062 std::string getContextUID(const std::string& url) const; 00063 std::string getApplicationUID(const std::string& url, unsigned int id) const; 00064 00065 const std::vector<XDAQContext>& getContexts() const { return contexts_; } 00066 00067 ConfigurationTree getContextNode(const ConfigurationManager* configManager, 00068 const std::string& contextUID) const; 00069 ConfigurationTree getApplicationNode(const ConfigurationManager* configManager, 00070 const std::string& contextUID, 00071 const std::string& appUID) const; 00072 ConfigurationTree getSupervisorConfigNode(const ConfigurationManager* configManager, 00073 const std::string& contextUID, 00074 const std::string& appUID) const; 00075 00076 // artdaq specific get methods 00077 std::vector<const XDAQContext*> getBoardReaderContexts() const; 00078 std::vector<const XDAQContext*> getEventBuilderContexts() const; 00079 std::vector<const XDAQContext*> getAggregatorContexts() const; 00080 unsigned int getARTDAQAppRank(const std::string& contextUID = "X") const; 00081 std::map<std::string /*contextUID*/, 00082 std::pair<std::string /*host_name*/, unsigned int /*rank*/>> 00083 getARTDAQAppRankMap() const; 00084 std::string getContextAddress(const std::string& contextUID = "X", 00085 bool wantHttp = false) const; 00086 unsigned int getARTDAQDataPort(const ConfigurationManager* configManager, 00087 const std::string& contextUID = "X") const; 00088 static bool isARTDAQContext(const std::string& contextUID); 00089 00090 private: 00091 std::vector<XDAQContext> contexts_; 00092 // std::vector<unsigned int> artdaqContexts_; 00093 // 00094 std::vector<unsigned int> artdaqBoardReaders_; 00095 std::vector<unsigned int> artdaqEventBuilders_; 00096 std::vector<unsigned int> artdaqAggregators_; 00097 00098 public: 00099 // XDAQ Context Column names 00100 struct ColContext 00101 { 00102 std::string const colContextUID_ = "ContextUID"; 00103 std::string const colLinkToApplicationTable_ = "LinkToApplicationTable"; 00104 std::string const colLinkToApplicationGroupID_ = "LinkToApplicationGroupID"; 00105 std::string const colStatus_ = TableViewColumnInfo::COL_NAME_STATUS; 00106 std::string const colId_ = "Id"; 00107 std::string const colAddress_ = "Address"; 00108 std::string const colPort_ = "Port"; 00109 // std::string const colARTDAQDataPort_ = "ARTDAQDataPort"; 00110 } colContext_; 00111 00112 // XDAQ App Column names 00113 struct ColApplication 00114 { 00115 std::string const colApplicationGroupID_ = "ApplicationGroupID"; 00116 std::string const colApplicationUID_ = "ApplicationUID"; 00117 std::string const colLinkToSupervisorTable_ = "LinkToSupervisorTable"; 00118 std::string const colLinkToSupervisorUID_ = "LinkToSupervisorUID"; 00119 std::string const colStatus_ = TableViewColumnInfo::COL_NAME_STATUS; 00120 std::string const colClass_ = "Class"; 00121 std::string const colId_ = "Id"; 00122 std::string const colInstance_ = "Instance"; 00123 std::string const colNetwork_ = "Network"; 00124 std::string const colGroup_ = "Group"; 00125 std::string const colModule_ = "Module"; 00126 std::string const colConfigurePriority_ = "ConfigurePriority"; 00127 std::string const colStartPriority_ = "StartPriority"; 00128 std::string const colStopPriority_ = "StopPriority"; 00129 std::string const colLinkToPropertyTable_ = "LinkToPropertyTable"; 00130 std::string const colLinkToPropertyGroupID_ = "LinkToPropertyGroupID"; 00131 00132 } colApplication_; 00133 00134 // XDAQ App Property Column names 00135 struct ColApplicationProperty 00136 { 00137 std::string const colPropertyGroupID_ = "PropertyGroupID"; 00138 std::string const colPropertyUID_ = "UID"; 00139 std::string const colStatus_ = TableViewColumnInfo::COL_NAME_STATUS; 00140 std::string const colPropertyName_ = "PropertyName"; 00141 std::string const colPropertyType_ = "PropertyType"; 00142 std::string const colPropertyValue_ = "PropertyValue"; 00143 00144 } colAppProperty_; 00145 00146 static const std::string ARTDAQ_OFFSET_PORT; 00147 00148 public: 00149 static const std::set<std::string> FETypeClassNames_, DMTypeClassNames_, 00150 LogbookTypeClassNames_, MacroMakerTypeClassNames_, ChatTypeClassNames_, 00151 ConsoleTypeClassNames_, ConfigurationGUITypeClassNames_; 00152 static const std::string GATEWAY_SUPERVISOR_CLASS, WIZARD_SUPERVISOR_CLASS, 00153 DEPRECATED_SUPERVISOR_CLASS; 00154 }; 00155 } // namespace ots 00156 #endif