From 96ca4d02bb1b568ff20143cca9a874a9346af468 Mon Sep 17 00:00:00 2001 From: Huamonarch Date: Fri, 15 May 2026 12:38:49 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20AlgBase=20=E4=BB=8E=20ExpModule=20?= =?UTF-8?q?=E8=BF=81=E7=A7=BB=E5=88=B0=20ExpressionEngine?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eqpalg/alg_base.cpp | 19 ++++++++++--------- eqpalg/alg_base.h | 6 ++---- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/eqpalg/alg_base.cpp b/eqpalg/alg_base.cpp index cb4cafa..b664311 100644 --- a/eqpalg/alg_base.cpp +++ b/eqpalg/alg_base.cpp @@ -85,8 +85,7 @@ int AlgBase::init() { ms = 20; } this->delay_time_ = milliseconds(ms); - exp_mpdule_ptr_ = - std::make_unique(mm_vars, m_tags, is_exp_alg_); + expr_engine_ = std::make_unique(mm_vars, m_tags); if (this->prr_ == 1) { string exp_str = ""; @@ -98,10 +97,8 @@ int AlgBase::init() { logger_->Info() << "tmp_exp:" << tmp_exp << std::endl; exp_str = get_macro_replaced_exp(tmp_exp); logger_->Info() << "exp_str:" << exp_str << std::endl; - exp_mpdule_ptr_->add_exp("pre_result", exp_str); - logger_->Info() << "pre_result:" - << exp_mpdule_ptr_->get_exp_str("pre_result") - << std::endl; + expr_engine_->registerExpression("pre_result", exp_str); + logger_->Info() << "pre_result:" << exp_str << std::endl; } logger_->Debug() << "ruleid:" << this->rule_id_ << ",rulename:" << this->rule_name_ @@ -199,7 +196,7 @@ void AlgBase::exec_mon_call() { if (alarm.alarmed) { logger_->Debug() << alarm.content << endl; alarm_poster_.alarm(alarm, &last_alarm_time_); - exp_mpdule_ptr_->fun_reset(); + expr_engine_->forceResetFunVars(); } else { if (get_save_data_cycled()) { this->save_rule_norm_data(); @@ -371,8 +368,12 @@ bool AlgBase::update_map_rule() { bool AlgBase::get_prr() { 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; return prr_result; } diff --git a/eqpalg/alg_base.h b/eqpalg/alg_base.h index 24bc417..54f0672 100644 --- a/eqpalg/alg_base.h +++ b/eqpalg/alg_base.h @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include #include @@ -100,7 +100,7 @@ protected: std::vector error_code_list_; int prr_ = PRR::None; - std::unique_ptr exp_mpdule_ptr_; + std::unique_ptr expr_engine_; DataInfo data_info_; @@ -108,8 +108,6 @@ protected: bool now_prr_ = false; - bool is_exp_alg_ = false; - int task_seq = 0; TimeDur save_interval_ms_ = 5000ms; TimeDur rule_state_update_interval_ms_ = 500ms;