eis/eqpalg/threads/manager.h

174 lines
4.4 KiB
C
Raw Normal View History

#pragma once
/**
* @file manager.h
* @brief 线
* @author your name (you@domain.com)
* @version 0.1
* @date 2024-03-28
*
* Copyright: Baosight Co. Ltd.
* DO NOT COPY/USE WITHOUT PERMISSION
*
*/
#include <eqpalg/build_algorithm.h>
#include <eqpalg/threads/handler_exec.h>
#include <eqpalg/utility/alarm_handler.hpp>
#include <memory>
#include <shared_mutex>
#include <string>
#include <thread>
#include <utility>
namespace threads {
/**
* @brief 线
*/
class Manager {
public:
/**
* @brief Construct a new Manager object
*/
Manager();
/**
* @brief Destroy the Manager object
* 线
*/
~Manager();
protected:
std::map<std::string, std::tuple<int, std::string, mix_cc::json, bool, double,
double, int>>
stored_cfg_data_;
std::vector<std::tuple<std::thread::id, std::string>>
tid_2_thread_name_;
bool is_running_;
bool is_start_;
std::unique_ptr<LOG> logger_;
std::unique_ptr<LOG> alarm_logger_;
map<string, string> rule_alg_id_mapping_;
std::shared_mutex handles_mutex;
map<std::string, std::unique_ptr<HandlerExec>>
handles_;
std::unique_ptr<std::thread> r_thread_;
std::unique_ptr<AlarmHandler> alarm_handler_ptr_;
int thread_num_ = 0;
public:
/**
* @brief
* @param ruleId id
* @param alg_id id
* @param name
* @param rule_json
* @param usable
* @param padding_low
* @param padding_up
* @param task_seq 线
* @return int 0--
*/
int storage(const string &ruleId, int alg_id, const string &name,
const mix_cc::json &rule_json, bool usable, double padding_low,
double padding_up, int task_seq);
/**
* @brief 使
* @param ruleId id
* @return int
*/
int load(const string &ruleId);
/**
* @brief 线 mon
* @return int
*/
int start();
/**
* @brief 线
* @param ruleId id
* @return int
*/
int attach(const string &ruleId);
/**
* @brief
* 6-
* 7-
* @param ruleId My Param doc
* @return int
*/
int reset(const string &ruleId);
/**
* @brief
* @param ruleId id
* @return int
*/
int detach(const string &ruleId);
/**
* @brief
* @param ruleId id
* @param time_start
* @param time_end
* @return int
*/
int exec_task(std::string ruleId, TimePoint time_start, TimePoint time_end);
/**
* @brief /
* 1.线2.stored_cfg_data_的维护便
* @param ruleId id
* @param usable /
* @return int
*/
int enable(std::string ruleId, bool usable);
/**
* @brief
* @param ruleId My Param doc
* @return int
*/
int delete_instance(std::string ruleId);
protected:
/**
* @brief
* @param ruleId id
* @return int
*/
int build_alg_to_handle(const string &ruleId);
/**
* @brief 线
* @param alg_thread_name 线
* @return int
*/
int detach_full_alg(std::string alg_thread_name);
public:
/**
* @brief
* @param ruleid
* @param lb
* @param ub
* @param va
* @param stime
* @param etime
*/
void update_limit_alarm(std::string ruleid, double lb, double ub, double va,
int64_t stime, int64_t etime);
/**
* @brief Get the thread size object
* @return int
*/
int get_thread_size();
};
}