// // Created by xtkuang on 2025/6/9. // #ifndef MONITOR_MANAGER_H #define MONITOR_MANAGER_H #include #include "rapidxml/xml_parser.h" #include "monitor/monitor_factory.h" namespace cmvr::monitor { class MonitorManager { public: MonitorManager(const MonitorManager&) = delete; MonitorManager& operator=(const MonitorManager&) = delete; static MonitorManager& getInstance(const XmlNode &cfg); static MonitorManager& getInstance(); static void destroyInstance(); private: explicit MonitorManager (const XmlNode &cfg); void init_monitors(); private: static std::once_flag init_flag_; static std::shared_ptr instance_; XmlNode cfg_; std::shared_ptr monitor_factory_; std::unordered_map> monitors_; }; } #endif //MONITOR_MANAGER_H