From 47718a637fa239dcbec0fffca736f3c3b1cf7887 Mon Sep 17 00:00:00 2001
From: LAPTOP-T815PCOQ\25526 <mr.liuyang@126.com>
Date: 星期二, 10 十二月 2024 08:35:17 +0800
Subject: [PATCH] Merge branch 'clh' into liuyang
---
SourceCode/Bond/BondEq/AlarmMonitor.cpp | 25 +++++++++++++++++++------
1 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/SourceCode/Bond/BondEq/AlarmMonitor.cpp b/SourceCode/Bond/BondEq/AlarmMonitor.cpp
index d53b6f7..8d3c9f5 100644
--- a/SourceCode/Bond/BondEq/AlarmMonitor.cpp
+++ b/SourceCode/Bond/BondEq/AlarmMonitor.cpp
@@ -30,6 +30,11 @@
item.second->release();
}
m_mapAlarming.clear();
+
+ for (auto item : m_alarms) {
+ item->release();
+ }
+ m_alarms.clear();
}
std::string& CAlarmMonitor::getClassName()
@@ -91,6 +96,7 @@
if (!findAlarm(alarmIds, iter->first)) {
// 消除警告, 同时将信息发出,以使界面显示和历史记录保存
iter->second->alarmOff();
+ addAlarmToHistoryRecord(iter->second);
LOGE("消除了警告:%s", iter->second->toString().c_str());
SendBroadcast(&CIntent(BC_CODE_ALARM_OFF, "", iter->second));
@@ -159,7 +165,6 @@
void CAlarmMonitor::Serialize(CArchive& ar)
{
- /*
if (ar.IsStoring())
{
Lock();
@@ -177,15 +182,12 @@
ar >> count;
for (int i = 0; i < count; i++) {
CAlarm* pAlarm = new CAlarm();
- pAlarm->addRef();
pAlarm->Serialize(ar);
- AddAlarm(pAlarm);
- pAlarm->release();
-
+ addAlarmToHistoryRecord(pAlarm);
+ LOGE("历史警告:%s", pAlarm->toString().c_str());
}
Unlock();
}
- */
}
void CAlarmMonitor::getAlarmingMap(std::map<int, CAlarm*>& alarms)
@@ -240,4 +242,15 @@
}
return FALSE;
+}
+
+void CAlarmMonitor::addAlarmToHistoryRecord(CAlarm* pAlarm)
+{
+ pAlarm->addRef();
+ m_alarms.push_back(pAlarm);
+ if (m_alarms.size() > 1000) {
+ CAlarm* pTemp = m_alarms.front();
+ pTemp->release();
+ m_alarms.pop_front();
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3