refactor: AlgBase 从 ExpModule 迁移到 ExpressionEngine

This commit is contained in:
Huamonarch 2026-05-15 12:38:49 +08:00
parent f10da49f65
commit 96ca4d02bb
2 changed files with 12 additions and 13 deletions

View File

@ -85,8 +85,7 @@ int AlgBase::init() {
ms = 20; ms = 20;
} }
this->delay_time_ = milliseconds(ms); this->delay_time_ = milliseconds(ms);
exp_mpdule_ptr_ = expr_engine_ = std::make_unique<ExpressionEngine>(mm_vars, m_tags);
std::make_unique<ExpModule>(mm_vars, m_tags, is_exp_alg_);
if (this->prr_ == 1) { if (this->prr_ == 1) {
string exp_str = ""; string exp_str = "";
@ -98,10 +97,8 @@ int AlgBase::init() {
logger_->Info() << "tmp_exp:" << tmp_exp << std::endl; logger_->Info() << "tmp_exp:" << tmp_exp << std::endl;
exp_str = get_macro_replaced_exp(tmp_exp); exp_str = get_macro_replaced_exp(tmp_exp);
logger_->Info() << "exp_str:" << exp_str << std::endl; logger_->Info() << "exp_str:" << exp_str << std::endl;
exp_mpdule_ptr_->add_exp("pre_result", exp_str); expr_engine_->registerExpression("pre_result", exp_str);
logger_->Info() << "pre_result:" logger_->Info() << "pre_result:" << exp_str << std::endl;
<< exp_mpdule_ptr_->get_exp_str("pre_result")
<< std::endl;
} }
logger_->Debug() << "ruleid:" << this->rule_id_ logger_->Debug() << "ruleid:" << this->rule_id_
<< ",rulename:" << this->rule_name_ << ",rulename:" << this->rule_name_
@ -199,7 +196,7 @@ void AlgBase::exec_mon_call() {
if (alarm.alarmed) { if (alarm.alarmed) {
logger_->Debug() << alarm.content << endl; logger_->Debug() << alarm.content << endl;
alarm_poster_.alarm(alarm, &last_alarm_time_); alarm_poster_.alarm(alarm, &last_alarm_time_);
exp_mpdule_ptr_->fun_reset(); expr_engine_->forceResetFunVars();
} else { } else {
if (get_save_data_cycled()) { if (get_save_data_cycled()) {
this->save_rule_norm_data(); this->save_rule_norm_data();
@ -371,8 +368,12 @@ bool AlgBase::update_map_rule() {
bool AlgBase::get_prr() { bool AlgBase::get_prr() {
if (this->prr_ == 1) { if (this->prr_ == 1) {
exp_mpdule_ptr_->update(); // 刷新共享内存变量
bool prr_result = (bool)exp_mpdule_ptr_->get_value("pre_result"); this->refresh_now_time();
mix_cc::time_range_t dummy_range;
expr_engine_->refreshFromMemory(this->now_time_, dummy_range);
bool prr_result = expr_engine_->evaluateBool("pre_result");
this->now_prr_ = prr_result; this->now_prr_ = prr_result;
return prr_result; return prr_result;
} }

View File

@ -18,7 +18,7 @@
#include <eqpalg/define/error_code.h> #include <eqpalg/define/error_code.h>
#include <eqpalg/define/public.h> #include <eqpalg/define/public.h>
#include <eqpalg/gb_logger.h> #include <eqpalg/gb_logger.h>
#include <eqpalg/utility/ExpModule.h> #include <eqpalg/utility/expression_engine.h>
#include <eqpalg/utility/VarsCache.hpp> #include <eqpalg/utility/VarsCache.hpp>
#include <eqpalg/utility/XorShift128Plus.hpp> #include <eqpalg/utility/XorShift128Plus.hpp>
#include <eqpalg/utility/alarm_poster.h> #include <eqpalg/utility/alarm_poster.h>
@ -100,7 +100,7 @@ protected:
std::vector<ErrorCodeType> error_code_list_; std::vector<ErrorCodeType> error_code_list_;
int prr_ = PRR::None; int prr_ = PRR::None;
std::unique_ptr<ExpModule> exp_mpdule_ptr_; std::unique_ptr<ExpressionEngine> expr_engine_;
DataInfo data_info_; DataInfo data_info_;
@ -108,8 +108,6 @@ protected:
bool now_prr_ = false; bool now_prr_ = false;
bool is_exp_alg_ = false;
int task_seq = 0; int task_seq = 0;
TimeDur save_interval_ms_ = 5000ms; TimeDur save_interval_ms_ = 5000ms;
TimeDur rule_state_update_interval_ms_ = 500ms; TimeDur rule_state_update_interval_ms_ = 500ms;