tdaq-develop-2025-02-12
AllSupervisorInfo.h
1 #ifndef _ots_AllSupervisorInfo_h
2 #define _ots_AllSupervisorInfo_h
3 
4 #include <map>
5 #include <mutex> /* for recursive_mutex */
6 #include <vector>
7 
8 #include "otsdaq/SupervisorInfo/SupervisorDescriptorInfoBase.h"
9 #include "otsdaq/SupervisorInfo/SupervisorInfo.h"
10 
11 // clang-format off
12 namespace ots
13 {
15 typedef std::map<unsigned int, const SupervisorInfo&> SupervisorInfoMap;
16 
31 {
32  public:
33  AllSupervisorInfo (void);
34  AllSupervisorInfo (xdaq::ApplicationContext* applicationContext);
35  ~AllSupervisorInfo (void);
36 
37  void init (xdaq::ApplicationContext* applicationContext);
38  void destroy (void);
39 
41  bool isWizardMode (void) const { return theWizardInfo_ ? true : false; }
42  bool isMacroMakerMode (void) const { return AllSupervisorInfo::MACROMAKER_MODE; }
43 
45  void setSupervisorStatus (xdaq::Application* app, const std::string& status, const unsigned int progress = 100, const std::string& detail = "", std::vector<SupervisorInfo::SubappInfo> subapps = {});
46  void setSupervisorStatus (const SupervisorInfo& appInfo, const std::string& status, const unsigned int progress = 100, const std::string& detail = "", std::vector<SupervisorInfo::SubappInfo> subapps = {});
47  void setSupervisorStatus (const unsigned int& id, const std::string& status, const unsigned int progress = 100, const std::string& detail = "", std::vector<SupervisorInfo::SubappInfo> subapps = {});
48  void clearSupervisorSubappsStatus (const SupervisorInfo& appInfo);
49 
51  const std::map<unsigned int /* lid */, SupervisorInfo>& getAllSupervisorInfo (void) const { return allSupervisorInfo_; }
52  const SupervisorInfoMap& getAllFETypeSupervisorInfo (void) const { return allFETypeSupervisorInfo_; }
53  const SupervisorInfoMap& getAllDMTypeSupervisorInfo (void) const { return allDMTypeSupervisorInfo_; }
54  const SupervisorInfoMap& getAllLogbookTypeSupervisorInfo (void) const { return allLogbookTypeSupervisorInfo_; }
55  const SupervisorInfoMap& getAllMacroMakerTypeSupervisorInfo (void) const { return allMacroMakerTypeSupervisorInfo_; }
56  const std::map<std::string /*hostname*/, const SupervisorInfo&>& getAllTraceControllerSupervisorInfo (void) const { return allTraceControllerSupervisorInfo_; }
57 
58  const SupervisorInfo& getSupervisorInfo (xdaq::Application* app) const;
59  const SupervisorInfo& getGatewayInfo (void) const;
60  XDAQ_CONST_CALL xdaq::ApplicationDescriptor* getGatewayDescriptor (void) const;
61  const SupervisorInfo& getWizardInfo (void) const;
62  XDAQ_CONST_CALL xdaq::ApplicationDescriptor* getWizardDescriptor (void) const;
63  const SupervisorInfo& getArtdaqSupervisorInfo (void) const;
64 
65  std::vector<std::vector<const SupervisorInfo*>> getOrderedSupervisorDescriptors (const std::string& stateMachineCommand, bool onlyGatewayContextSupervisors = false) const;
66  std::recursive_mutex& getSupervisorInfoMutex (unsigned int lid) { return allSupervisorInfoMutex_[lid]; }
67  private:
68  SupervisorInfo* theSupervisorInfo_;
69  SupervisorInfo* theWizardInfo_;
70  SupervisorInfo* theARTDAQSupervisorInfo_;
71 
72  std::map<unsigned int /* lid */, SupervisorInfo> allSupervisorInfo_;
73  std::map<unsigned int /* lid */, std::recursive_mutex> allSupervisorInfoMutex_;
74  SupervisorInfoMap allFETypeSupervisorInfo_, allDMTypeSupervisorInfo_, allLogbookTypeSupervisorInfo_, allMacroMakerTypeSupervisorInfo_;
76  std::map<std::string /*hostname*/, const SupervisorInfo&> allTraceControllerSupervisorInfo_;
77 
78  static const bool MACROMAKER_MODE;
79 
80 };
81 
82 // clang-format off
83 
84 } // namespace ots
85 
86 #endif
void setSupervisorStatus(xdaq::Application *app, const std::string &status, const unsigned int progress=100, const std::string &detail="", std::vector< SupervisorInfo::SubappInfo > subapps={})
SETTERs.
bool isWizardMode(void) const
BOOLs.
const std::map< unsigned int, SupervisorInfo > & getAllSupervisorInfo(void) const
GETTERs (so searching and iterating is easier)
friend class SupervisorInfo
"Friend" class needs access to private members