00001 #ifndef _ots_SupervisorInfo_h_
00002 #define _ots_SupervisorInfo_h_
00003
00004 #include <string>
00005 #include "otsdaq-core/Macros/CoutMacros.h"
00006 #include "otsdaq-core/ConfigurationPluginDataFormats/XDAQContextConfiguration.h"
00007
00008 #pragma GCC diagnostic push
00009 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
00010 #include "xdaq/Application.h"
00011 #include "xdaq/ContextDescriptor.h"
00012 #pragma GCC diagnostic pop
00013 #include "otsdaq-core/Macros/XDAQApplicationMacros.h"
00014
00015
00016 namespace ots
00017 {
00018
00019 class SupervisorInfo
00020 {
00021
00022 public:
00023
00024
00025 SupervisorInfo (
00026 XDAQ_CONST_CALL xdaq::ApplicationDescriptor* descriptor,
00027 const std::string& name, const std::string& contextName) :
00028 descriptor_ (descriptor),
00029 contextDescriptor_ (descriptor?descriptor->getContextDescriptor():0),
00030 name_ (name),
00031 contextName_ (contextName),
00032 id_ (descriptor?descriptor->getLocalId():0),
00033 class_ (descriptor?descriptor->getClassName():""),
00034 contextURL_ (contextDescriptor_?contextDescriptor_->getURL():""),
00035 URN_ (descriptor?descriptor->getURN():""),
00036 URL_ (contextURL_ + "/" + URN_),
00037 port_ (0),
00038 status_ ("Unknown")
00039 {
00040
00041
00042 if(name_ == "") name_ = id_;
00043 if(contextName_ == "") contextName_ = class_;
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 }
00056
00057 ~SupervisorInfo(void)
00058 {;}
00059
00060
00061 bool isGatewaySupervisor (void) const { return class_ == XDAQContextConfiguration::GATEWAY_SUPERVISOR_CLASS; }
00062 bool isWizardSupervisor (void) const { return class_ == XDAQContextConfiguration::WIZARD_SUPERVISOR_CLASS; }
00063 bool isTypeFESupervisor (void) const { return XDAQContextConfiguration::FETypeClassNames_.find(class_) != XDAQContextConfiguration::FETypeClassNames_.end(); }
00064 bool isTypeDMSupervisor (void) const { return XDAQContextConfiguration::DMTypeClassNames_.find(class_) != XDAQContextConfiguration::DMTypeClassNames_.end(); }
00065 bool isTypeLogbookSupervisor (void) const { return XDAQContextConfiguration::LogbookTypeClassNames_.find(class_) != XDAQContextConfiguration::LogbookTypeClassNames_.end(); }
00066 bool isTypeMacroMakerSupervisor (void) const { return XDAQContextConfiguration::MacroMakerTypeClassNames_.find(class_) != XDAQContextConfiguration::MacroMakerTypeClassNames_.end(); }
00067 bool isTypeConfigurationGUISupervisor (void) const { return XDAQContextConfiguration::ConfigurationGUITypeClassNames_.find(class_) != XDAQContextConfiguration::ConfigurationGUITypeClassNames_.end(); }
00068 bool isTypeChatSupervisor (void) const { return XDAQContextConfiguration::ChatTypeClassNames_.find(class_) != XDAQContextConfiguration::ChatTypeClassNames_.end(); }
00069 bool isTypeConsoleSupervisor (void) const { return XDAQContextConfiguration::ConsoleTypeClassNames_.find(class_) != XDAQContextConfiguration::ConsoleTypeClassNames_.end(); }
00070
00071
00072 XDAQ_CONST_CALL xdaq::ApplicationDescriptor* getDescriptor (void) const { return descriptor_; }
00073 const xdaq::ContextDescriptor* getContextDescriptor(void) const { return contextDescriptor_; }
00074 const std::string& getName (void) const { return name_; }
00075 const std::string& getContextName (void) const { return contextName_; }
00076 const unsigned int& getId (void) const { return id_; }
00077 const std::string& getClass (void) const { return class_; }
00078 const std::string& getStatus (void) const { return status_; }
00079 const std::string& getURL (void) const { return contextURL_; }
00080 const std::string& getURN (void) const { return URN_; }
00081 const std::string& getFullURL (void) const { return URL_; }
00082 const uint16_t& getPort (void) const { return port_; }
00083
00084
00085 void setStatus (const std::string& status) { status_ = status; }
00086 void clear (void) { descriptor_ = 0; contextDescriptor_ = 0; name_ = ""; id_ = 0; contextName_ = ""; status_ = "Unknown"; }
00087
00088 private:
00089 XDAQ_CONST_CALL xdaq::ApplicationDescriptor* descriptor_;
00090 XDAQ_CONST_CALL xdaq::ContextDescriptor* contextDescriptor_;
00091 std::string name_;
00092 std::string contextName_;
00093 unsigned int id_;
00094 std::string class_;
00095 std::string contextURL_;
00096 std::string URN_;
00097 std::string URL_;
00098 uint16_t port_;
00099 std::string status_;
00100 };
00101
00102 }
00103
00104 #endif