修正一个alarm_service的map::at崩溃问题
This commit is contained in:
parent
28c8149491
commit
f0e48fcb59
|
|
@ -138,12 +138,25 @@ void AlarmService::check_rule_against_value(AlarmRule& rule, double value, const
|
|||
default: break;
|
||||
}
|
||||
|
||||
AlarmState& state = m_alarm_states.at(rule.rule_id);
|
||||
|
||||
auto it = m_alarm_states.find(rule.rule_id);
|
||||
|
||||
if (it == m_alarm_states.end()) {
|
||||
spdlog::warn("AlarmState for rule '{}' was missing. Creating it on-the-fly.", rule.rule_id);
|
||||
|
||||
auto result = m_alarm_states.emplace(
|
||||
std::piecewise_construct,
|
||||
std::forward_as_tuple(rule.rule_id),
|
||||
std::forward_as_tuple(m_io_context)
|
||||
);
|
||||
it = result.first; // 'it' 现在指向新创建的元素
|
||||
}
|
||||
|
||||
AlarmState& state = it->second;
|
||||
|
||||
if (condition_met) {
|
||||
// 条件满足
|
||||
if (state.current_state == AlarmStateType::NORMAL) {
|
||||
// 状态:NORMAL -> PENDING
|
||||
state.current_state = AlarmStateType::PENDING;
|
||||
|
||||
if (rule.debounce_seconds <= 0) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue