37 lines
944 B
C++
37 lines
944 B
C++
//
|
|
// 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
|