From b67e16869a5bfbbde3896a4e5a13f1301f1b978d Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 13 十二月 2024 14:55:55 +0800
Subject: [PATCH] 1.调整保存警告到数据库的位置; 2.CAlarmMonitor组件不再保存已完成的警告的数据;
---
SourceCode/Bond/BondEq/AlarmMonitor.cpp | 50 ++++++++++++++++++++++----------------------------
1 files changed, 22 insertions(+), 28 deletions(-)
diff --git a/SourceCode/Bond/BondEq/AlarmMonitor.cpp b/SourceCode/Bond/BondEq/AlarmMonitor.cpp
index 86614e5..37528f3 100644
--- a/SourceCode/Bond/BondEq/AlarmMonitor.cpp
+++ b/SourceCode/Bond/BondEq/AlarmMonitor.cpp
@@ -30,11 +30,6 @@
item.second->release();
}
m_mapAlarming.clear();
-
- for (auto item : m_alarms) {
- item->release();
- }
- m_alarms.clear();
}
std::string& CAlarmMonitor::getClassName()
@@ -169,10 +164,10 @@
if (ar.IsStoring())
{
Lock();
- int count = (int)m_alarms.size();
+ int count = (int)m_mapAlarming.size();
ar << count;
- for (auto item : m_alarms) {
- item->Serialize(ar);
+ for (auto item : m_mapAlarming) {
+ item.second->Serialize(ar);
}
Unlock();
}
@@ -183,9 +178,10 @@
ar >> count;
for (int i = 0; i < count; i++) {
CAlarm* pAlarm = new CAlarm();
+ pAlarm->addRef();
pAlarm->Serialize(ar);
- addAlarmToHistoryRecord(pAlarm);
- LOGE("历史警告:%s", pAlarm->toString().c_str());
+ addAlarming(pAlarm);
+ pAlarm->release();
}
Unlock();
}
@@ -215,18 +211,6 @@
Unlock();
return iter->second;
-}
-
-std::list< CAlarm*>& CAlarmMonitor::getAlarmRecords()
-{
- return m_alarms;
-}
-
-void CAlarmMonitor::getAlarmRecords(std::list< CAlarm*>& list)
-{
- Lock();
- list = m_alarms;
- Unlock();
}
BOOL CAlarmMonitor::compareData(const char* pScrData, const char* pTarData, int len)
@@ -270,11 +254,21 @@
void CAlarmMonitor::addAlarmToHistoryRecord(CAlarm* pAlarm)
{
+ // 加入数据库
+ AlarmManager::getInstance().addAlarm(
+ std::to_string(pAlarm->getId()).c_str(),
+ getAlarmText(pAlarm->getId()),
+ CToolUnits::timeToString2(pAlarm->getOnTime()).c_str(),
+ CToolUnits::timeToString2(pAlarm->getOffTime()).c_str());
+}
+
+BOOL CAlarmMonitor::addAlarming(CAlarm* pAlarm)
+{
+ auto iter = m_mapAlarming.find(pAlarm->getId());
+ if (iter != m_mapAlarming.end()) return FALSE;
+
pAlarm->addRef();
- m_alarms.push_back(pAlarm);
- if (m_alarms.size() > 1000) {
- CAlarm* pTemp = m_alarms.front();
- pTemp->release();
- m_alarms.pop_front();
- }
+ m_mapAlarming[pAlarm->getId()] = pAlarm;
+
+ return TRUE;
}
\ No newline at end of file
--
Gitblit v1.9.3