SourceCode/Bond/BondEq/AlarmMonitor.cpp
@@ -9,8 +9,8 @@
CAlarmMonitor::CAlarmMonitor()
{
   m_pRawData = new char[200];
   memset(m_pRawData, 0, 200);
   m_pRawData = new char[512];
   memset(m_pRawData, 0, 512);
}
@@ -30,11 +30,6 @@
      item.second->release();
   }
   m_mapAlarming.clear();
   for (auto item : m_alarms) {
      item->release();
   }
   m_alarms.clear();
}
std::string& CAlarmMonitor::getClassName()
@@ -54,7 +49,7 @@
   if (MONITOR_ID_ALARM != id) {
      return;
   }
   // 比较有没有变化
   if (compareData(m_pRawData, (const char*)pData, size)) {
      return;
@@ -166,28 +161,9 @@
void CAlarmMonitor::Serialize(CArchive& ar)
{
   if (ar.IsStoring())
   {
      Lock();
      int count = (int)m_alarms.size();
      ar << count;
      for (auto item : m_alarms) {
         item->Serialize(ar);
      }
      Unlock();
   if (ar.IsStoring()) {
   }
   else
   {
      Lock();
      int count;
      ar >> count;
      for (int i = 0; i < count; i++) {
         CAlarm* pAlarm = new CAlarm();
         pAlarm->Serialize(ar);
         addAlarmToHistoryRecord(pAlarm);
         LOGE("历史警告:%s", pAlarm->toString().c_str());
      }
      Unlock();
   else {
   }
}
@@ -215,18 +191,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 +234,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;
}