LAPTOP-SNT8I5JK\Boounion
2024-12-12 02fb493f0903013e5258c2ff5e2cb27de873378a
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()
@@ -90,12 +95,14 @@
   for (auto iter = m_mapAlarming.begin(); iter != m_mapAlarming.end();/* iter++*/) {
      if (!findAlarm(alarmIds, iter->first)) {
         // 消除警告, 同时将信息发出,以使界面显示和历史记录保存
         iter->second->alarmOff();
         LOGE("消除了警告:%s", iter->second->toString().c_str());
         SendBroadcast(&CIntent(BC_CODE_ALARM_OFF, "", iter->second));
         iter->second->release();
         CAlarm* pAlarm = iter->second;
         pAlarm->alarmOff();
         addAlarmToHistoryRecord(pAlarm);
         m_mapAlarming.erase(iter++);
         LOGE("消除了警告:%s", pAlarm->toString().c_str());
         SendBroadcast(&CIntent(BC_CODE_ALARM_OFF, "", pAlarm));
         pAlarm->release();
      }
      else {
         iter++;
@@ -159,7 +166,6 @@
void CAlarmMonitor::Serialize(CArchive& ar)
{
   /*
   if (ar.IsStoring())
   {
      Lock();
@@ -177,22 +183,17 @@
      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)
std::map<int, CAlarm*>& CAlarmMonitor::getAlarmingMap()
{
   Lock();
   alarms = m_mapAlarming;
   Unlock();
   return m_mapAlarming;
}
BOOL CAlarmMonitor::isAlarming()
@@ -201,6 +202,31 @@
   BOOL bAlarming = !m_mapAlarming.empty();
   Unlock();
   return bAlarming;
}
CAlarm* CAlarmMonitor::getActiveAlarm()
{
   Lock();
   if (m_mapAlarming.empty()) {
      Unlock();
      return nullptr;
   }
   auto iter = m_mapAlarming.begin();
   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)
@@ -240,4 +266,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();
   }
}