cmvr-es/include/monitor/monitor_manager.h

37 lines
944 B
C
Raw Normal View History

//
// Created by xtkuang on 2025/6/9.
//
#ifndef MONITOR_MANAGER_H
#define MONITOR_MANAGER_H
#include <unordered_map>
#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<MonitorManager> instance_;
XmlNode cfg_;
std::shared_ptr<MonitorFactory> monitor_factory_;
std::unordered_map<std::string, std::shared_ptr<AbstractMonitor>> monitors_;
};
}
#endif //MONITOR_MANAGER_H