123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357 |
- #include "stdafx.h"
- #include "kernel.h"
- //#include "sharedefine.h"
- CAlarmEvent::CAlarmEvent()
- {
- GetLocalTime(&time);
- }
- /////////////////////////////////////////////////////////////////////////////
- CEventServer::CEventServer()
- {
- InitializeCriticalSection( &m_cs );
- }
- CEventServer::~CEventServer()
- {
- DeleteCriticalSection( &m_cs );
- }
- void CEventServer::AddNewEvent(CAlarmEvent* event)
- {
- EnterCriticalSection( &m_cs );
- eventList.AddHead(event);
- LeaveCriticalSection( &m_cs );
- }
- CAlarmEvent* CEventServer::GetUnconfirmEvent()
- {
- //POSITION pos = eventList.GetTailPosition();
- //while( pos != NULL )
- //{
- // CAlarmEvent* event= eventList.GetPrev(pos);
- // //SYSTEMTIME st;
- // //GetLocalTime( &st );
- // //CTime time1(st);
- // //CTime time2(event->time);
- // //CTimeSpan spantime = time1 - time2;
- // //int nSecNum = spantime.GetSeconds() + spantime.GetMinutes()*60 + spantime.GetHours()*60*60;
- // if( (0==event->nConfirm || 2==event->nConfirm) )//&& nSecNum >= event->nIdentifyTime )
- // {
- // return event;
- // }
- // //if( 0==event->nConfirm || 2==event->nConfirm)
- // //{
- // // return event;
- // //}
- //}
- return NULL;
- }
- void CEventServer::SetEventStatus2Config( CString strDevUid, int nVarID,int nAlarmIndex )
- {
- POSITION pos = eventList.GetTailPosition();
- while( pos != NULL )
- {
- CAlarmEvent* event= eventList.GetPrev(pos);
- if( event->strUid==strDevUid && event->nVarID==nVarID && event->nAlarmIndex==nAlarmIndex && event->nDealStatus!=3 )
- {
- //LOG4C((LOG_NOTICE, "ProcessAlarmConfirm pDevUid = %s,nVarID = %d, nAlarmIndex = %d ", strDevUid,nVarID,nAlarmIndex ));
- event->nDealStatus = 3;
- break;
- }
- }
- }
- CAlarmEvent* CEventServer::GetUnconfirmEventForLoopPlaySound( CAlarmEvent *pEvent )
- {
- //bool bFirst=false;
- //POSITION pos = eventList.GetTailPosition();
- //while( pos != NULL )
- //{
- // CAlarmEvent* event= eventList.GetPrev(pos);
- // //SYSTEMTIME st;
- // //GetLocalTime( &st );
- // //CTime time1(st);
- // //CTime time2(event->time);
- // //CTimeSpan spantime = time1 - time2;
- // //int nSecNum = spantime.GetSeconds() + spantime.GetMinutes()*60 + spantime.GetHours()*60*60;
- // if( pEvent )
- // {
- // if( pEvent->nVarID==event->nVarID )
- // {
- // bFirst = true;
- // }
- // else if( bFirst )//&& (0==event->nConfirm || 2==event->nConfirm) && nSecNum >= event->nIdentifyTime )
- // {
- // return event;
- // }
- // }
- // else
- // {
- // if( (0==event->nConfirm || 2==event->nConfirm) )//&& nSecNum >= event->nIdentifyTime )
- // {
- // return event;
- // }
- // }
- // Sleep( 200 );
- //}
- ////下面是找到了pEvent这个事件,但后面的没有满足条件的,所以要从头开始找
- //if( bFirst )
- //{
- // pos = eventList.GetTailPosition();
- // while( pos != NULL )
- // {
- // CAlarmEvent* event= eventList.GetPrev(pos);
- // //SYSTEMTIME st;
- // //GetLocalTime( &st );
- // //CTime time1(st);
- // //CTime time2(event->time);
- // //CTimeSpan spantime = time1 - time2;
- // //int nSecNum = spantime.GetSeconds() + spantime.GetMinutes()*60 + spantime.GetHours()*60*60;
- // if( (0==event->nConfirm || 2==event->nConfirm) )//&& nSecNum >= event->nIdentifyTime )
- // {
- // return event;
- // }
- // Sleep( 200 );
- // }
- //}
- return NULL;
- }
- CAlarmEvent* CEventServer::GetNewEvent()
- {
- POSITION pos = eventList.GetTailPosition();
- while( pos != NULL )
- {
- CAlarmEvent* event= eventList.GetPrev(pos);
- //SYSTEMTIME st;
- //GetLocalTime( &st );
- //CTime time1(st);
- //CTime time2(event->time);
- //CTimeSpan spantime = time1 - time2;
- //int nSecNum = spantime.GetSeconds() + spantime.GetMinutes()*60 + spantime.GetHours()*60*60;
- //if( nSecNum >= event->nIdentifyTime &&
- if( 0==event->nGet )
- {
- //LOG4C((LOG_NOTICE, "报警内容:%s 辨识时间:%d", event->strContent,event->nIdentifyTime));
- //GetLocalTime( &event->time );
- event->nGet = true;
- return event;
- }
- //LOG4C((LOG_NOTICE, "%s %d %d ", event->strContent,nSecNum,event->nIdentifyTime ));
- //if( !event->bGet )
- //{
- // event->bGet = true;
- // return event;
- //}
- }
- return NULL;
- }
- void CEventServer::DeleteOneEvent( CString strUid, int nVarID, int nStatus )
- {
- EnterCriticalSection( &m_cs );
- POSITION pos = eventList.GetHeadPosition();
- while( pos != NULL )
- {
- POSITION pos1 = pos;
- CAlarmEvent* event= eventList.GetNext(pos);
- if( !event->strUid.Compare(strUid) && event->nVarID == nVarID && event->nStatus == nStatus )
- {
- delete event;
- eventList.RemoveAt(pos1);
- break;
- }
- }
- LeaveCriticalSection( &m_cs );
- }
- void CEventServer::DeleteOneEvent( int iIndex )
- {
- EnterCriticalSection( &m_cs );
- int nIndex=0;
- POSITION pos = eventList.GetTailPosition();
- while( pos != NULL )
- {
- POSITION pos1 = pos;
- CAlarmEvent* event= eventList.GetPrev(pos);
- if( iIndex==nIndex )
- {
- delete event;
- eventList.RemoveAt(pos1);
- break;
- }
- nIndex++;
- }
- LeaveCriticalSection( &m_cs );
- }
- void CEventServer::ClearAllEvent()
- {
- EnterCriticalSection( &m_cs );
- POSITION pos = eventList.GetHeadPosition();
- while(pos!=NULL)
- {
- POSITION pos1 = pos;
- CAlarmEvent* pEvent = eventList.GetNext(pos);
- if (pEvent)
- {
- delete pEvent;
- eventList.RemoveAt(pos1);
- }
- }
- LeaveCriticalSection( &m_cs );
- }
- CAlarmEvent* CEventServer::GetOneEvent( int iIndex )
- {
- CAlarmEvent* eventRet = NULL;
- EnterCriticalSection( &m_cs );
- int nIndex=0;
- POSITION pos = eventList.GetTailPosition();
- while( pos != NULL )
- {
- CAlarmEvent* event= eventList.GetPrev(pos);
- if( iIndex==nIndex )
- {
- eventRet = event;
- break;
- }
- nIndex++;
- }
- LeaveCriticalSection( &m_cs );
- return eventRet;
- }
- void CEventServer::SetOneEventInfo( int iIndex,int nIsSound,int nColor )
- {
- EnterCriticalSection( &m_cs );
- int nIndex=0;
- POSITION pos = eventList.GetTailPosition();
- while( pos != NULL )
- {
- CAlarmEvent* event= eventList.GetPrev(pos);
- if( iIndex==nIndex )
- {
- break;
- }
- nIndex++;
- }
- LeaveCriticalSection( &m_cs );
- }
- void CEventServer::AddAlarmEvent( CString strDevUid, int nVarID,int nStatus,CString strContent,
- double dbParaValue, int nUpperLimit,int nLowerLimit, int nNormalState,int nAlarmState,int nWarningLevel,
- int nAlarmIndex,int nNoticeDelay,CString strWarningTime )
- {
- //LOG4C((LOG_NOTICE, "AddAlarmEvent %s",strContent));
- CAlarmEvent* event=NULL;
-
- if( NULL == event )
- {
- event = new CAlarmEvent();
- GetLocalTime( &event->time );
- event->nStatus = nStatus;
- event->strUid = strDevUid;
- event->nVarID = nVarID;
- event->dbParaValue = dbParaValue;
- event->nUpperLimit = nUpperLimit;
- event->nLowerLimit = nLowerLimit;
- event->nNormalState = nNormalState;
- event->nAlarmState = nAlarmState;
- event->nWarningLevel = nWarningLevel;
- event->strContent = strContent;
- event->nAlarmIndex = nAlarmIndex;
- event->nNoticeDelay = nNoticeDelay;
- event->strWarningTime = strWarningTime;
-
- event->nGet = 0;
- event->nDealStatus = 0;
- event->nSoundTimes = 0;
- AddNewEvent(event);
- }
- //else
- //{
- // if( true == event->bGet )//已经显示在列表中
- // {
- // if( strContent.Find(pVariantsManager->m_strReturnNormal) != -1 )// 恢复正常
- // {
- // event->nIdentifyTime = nIdentifyTime;
- // event->strContent = strContent;
- // //GetLocalTime( &event->time );
- // event->bGet = false;//恢复正常马上显示到列表中
- // event->nConfirm = 2;//2:恢复正常
- // }
- // else
- // {
- // if( 2==event->nConfirm || 3==event->nConfirm || 4==event->nConfirm )//
- // {
- // event->nIdentifyTime = nIdentifyTime;
- // event->strContent = strContent;
- // GetLocalTime( &event->time );
- // event->bGet = false;
- // event->nConfirm = 0;
- // }
- // }
- // }
- // else//还未显示在列表中
- // {
- // if( strContent.Find(pVariantsManager->m_strReturnNormal) != -1 )// 恢复正常
- // {
- // event->nIdentifyTime = nIdentifyTime;
- // event->strContent = strContent;
- // //GetLocalTime( &event->time );
- // event->bGet = true;//未到辨别时间恢复则假设已经显示在列表中
- // event->nConfirm = 4;//4:未到辨别时间恢复正常
- // }
- // else
- // {
- // if( 2==event->nConfirm || 3==event->nConfirm || 4==event->nConfirm )//
- // {
- // event->nIdentifyTime = nIdentifyTime;
- // event->strContent = strContent;
- // GetLocalTime( &event->time );
- // event->bGet = false;
- // event->nConfirm = 0;
- // }
- // }
- // }
- //}
- }
- void CEventServer::Validate(bool valid)
- {
- m_bValid = valid;
- }
|