cmvr-es/include/monitor/abstract_monitor.h

42 lines
916 B
C
Raw Normal View History

//
// Created by xtkuang on 2025/6/6.
//
#ifndef ABSTRACT_MONITOR_H
#define ABSTRACT_MONITOR_H
#include <mutex>
#include <glog/logging.h>
#include "rapidxml/xml_parser.h"
#include "../utils/base/timer.h"
namespace cmvr::monitor{
class AbstractMonitor {
public:
explicit AbstractMonitor(const XmlNode &cfg){
cfg_ = cfg;
freq_ = cfg_.getAttrDefault("freq", 1);
timer_ = std::make_unique<FDTimer>();
timer_->start(std::chrono::milliseconds(1000/freq_), [this](){run();});
}
virtual ~AbstractMonitor() {timer_->stop();}
void run() {
if (!check_()) {
execution_();
}
}
protected:
XmlNode cfg_;
int freq_;
std::unique_ptr<FDTimer> timer_;
virtual bool check_() = 0;
virtual bool execution_() = 0;
};
}
#endif //ABSTRACT_MONITOR_H