eis/eqpalg/utility/eqp_stat.h

154 lines
3.7 KiB
C
Raw Normal View History

#pragma once
/**
* @file eqp_stat.h
* @brief shm数据
* @author your name (you@domain.com)
* @version 0.1
* @date 2023-12-21
*
* Copyright: Baosight Co. Ltd.
* DO NOT COPY/USE WITHOUT PERMISSION
*
*/
#include <log4cplus/LOG.h>
#include <shm/RuleStatShm.h>
#include <memory>
#include <vector>
class EqpStat {
public:
EqpStat();
~EqpStat();
public:
/**
* @brief
*/
void init();
/**
* @brief key的动态数据
* @param ruleid id
* @param rule_stat RuleStatShm::RuleStat数据
* @return true
* @return false
*/
bool update_dynamic(std::string ruleid,
const RuleStatShm::RuleStat& rule_stat);
/**
* @brief key的静态数据
* @param ruleid id
* @param rule_stat RuleStatShm::RuleStat数据
* @return true
* @return false
*/
/**
* @brief key的
* rule_stat_statstic_
* @param ruleid id
* @param is_times /
* @return true
* @return false
*/
bool update_static(std::string ruleid, bool is_times);
/**
* @brief
* rule_stat_
* @return true
* @return false
*/
bool update_static();
/**
* @brief key的所有数据
* @param ruleid My Param doc
* @param rule_stat My Param doc
* @return true
* @return false
*/
bool update_stat(std::string ruleid, const RuleStatShm::RuleStat& rule_stat);
/**
* @brief shm
* @param ruleid My Param doc
* @param rule_stat My Param doc
* @return true
* @return false
*/
bool add_stat_values(std::string ruleid, const double& rule_stat);
/**
* @brief shm的数据
* @param ruleid id
* @param rule_stat
* @return true
* @return false
*/
bool get_stat_values(std::string ruleid, RuleStatShm::RuleStat& rule_stat);
/**
* @brief key的数据
* @param ruleid My Param doc
* @return true
* @return false
*/
bool delete_stat(std::string ruleid);
/**
* @brief map json string
* @return std::string
*/
std::string get_stat_json();
/**
* @brief cfg查询 map中找到cfg不存在的
* @return std::vector<std::string>
*/
std::vector<std::string> stat_find_no_ruleid();
/**
* @brief map的size
* @return int
*/
int get_stat_size();
/**
* @brief T_RULE_CFG表
*/
void get_cfg_rules();
/**
* @brief Get the ruleid json object
* @return string {"ruleid":[xxx,xxx,]}
*/
string get_ruleid_json();
private:
std::unique_ptr<LOG> logger_;
std::vector<string> cfg_rules_;
bool cfg_flag = false;
chrono::system_clock::time_point
last_update_static_time_;
/**
* @brief
* @param ruleid My Param doc
* @return double
*/
double select_running_by_ruleid(string ruleid);
/**
* @brief
* @param ruleid My Param doc
* @return unsigned long
*/
unsigned long select_times_by_ruleid(string ruleid);
/**
* @brief
* @param ruleid My Param doc
* @return int
*/
int select_alarm_by_ruleid(string ruleid);
/**
* @brief
* @param ruleid My Param doc
* @return std::string
*/
std::string select_dev_coder_by_ruleid(string ruleid);
/**
* @brief
* @param ruleid My Param doc
* @return string
*/
string select_latest_alarm_by_ruleid(string ruleid);
};