eis/eqpalg/.do_not_use/data_handler/rs_mgr.h

115 lines
2.4 KiB
C
Raw Normal View History

#pragma once
/**
* @file rs_mgr.h
* @brief rs即dlib的running state
*
*
* @author Cat (null.null.null@qq.com)
* @version 0.1
* @date 2021-09-10
*
* Copyright: Baosight Co. Ltd.
* DO NOT COPY/USE WITHOUT PERMISSION
*
*/
#include <dlib/statistics.h>
#include <log4cplus/LOG.h>
#include <eqpalg/data_handler/rs_tools.h>
#include <eqpalg/define/dlib.h>
#include <boost/date_time.hpp>
#include <memory>
#include <string>
#include <filesystem>
#include <fstream>
#include <functional>
#include <optional>
#include "mix_cc/json.h"
namespace data_handler {
using namespace boost::posix_time;
using namespace boost::gregorian;
/**
* @brief dlib::RunningState的管理器
* @tparam dims
*/
class RsMgr {
public:
using RunningStats = Rs; ///< small_vector<dlib::running_stats<double>, 3>
protected:
const std::unique_ptr<LOG> logger_; // Logger类
const std::string rule_id_; // 规则ID
const size_t dims_;
RunningStats running_stats_; ///< 整体数据的统计特征
RunningStats weekly_running_stats_; ///< 本周运行统计
bool is_first_sampling_ = true;
size_t rs_count_ = 0;
public:
RsMgr(std::string rule_id_, size_t dims);
/**
* @brief running state信息
* @return true
* @return false
*/
bool load();
/**
* @brief data_load为第一次采样中cron进程累积的数据
* @param data_load My Param doc
* @return int
*/
int first_sampling(const SampleWindow& data_load);
/**
* @brief first_sampling()
* @return true
* @return false
*/
bool is_first_sampling();
/**
* @brief Get the running stats object
* @return RunningStats
*/
RunningStats get_running_stats();
/**
* @brief mon进程中满足条件的单个周期的数据存在其中
* @param value My Param doc
* @return true
* @return false
*/
bool store(const SamplePoint& value);
/**
* @brief
* @return true
* @return false
*/
bool commit();
/**
* @brief
* @return int
*/
// int weekly_organize_data();
protected:
/**
* @brief
* @return int
*/
int normal_dist_shift_alarm();
};
} // namespace data_handler