inline BOOL StorFactory::StopHdfsRecord(s32 nIndex) { CameraParam pParam; StorFactoryCameraChangeData change; if (nIndex <=0 || nIndex >= STOR_FACTORY_CAMERA_ID_MAX) { return FALSE; } GetCameraParamById(pParam, nIndex); if (pParam.m_Conf.data.conf.HdfsRecording == 0) { return TRUE; } Lock(); pParam.m_Conf.data.conf.HdfsRecording = 0; m_CameraParamMap[nIndex] = pParam; m_Conf.UpdateCameraData(nIndex, pParam.m_Conf); if (m_CameraMap[nIndex] != NULL) { m_CameraMap[nIndex]->SetHdfsRecord(FALSE); m_CameraMap[nIndex]->StopHdfsRecord(); } UnLock(); change.id = nIndex; change.type = STOR_FACTORY_CAMERA_RECORDING_OFF; CallCameraChange(change); return TRUE; }
inline BOOL StorFactory::DelCamera(s32 nIndex) { StorFactoryCameraChangeData change; VDC_DEBUG( "%s DelCamera %d\n",__FUNCTION__, nIndex); if (nIndex <=0 || nIndex >= STOR_FACTORY_CAMERA_ID_MAX) { return FALSE; } change.id = nIndex; change.type = STOR_FACTORY_CAMERA_DEL; CallCameraChange(change); Lock(); VDC_DEBUG( "%s Cleanup Begin\n",__FUNCTION__); m_CameraMap[nIndex]->Cleanup(); VDC_DEBUG( "%s Cleanup End\n",__FUNCTION__); delete m_CameraMap[nIndex]; m_CameraMap[nIndex] = NULL; m_CameraParamMap.erase(nIndex); m_CameraOnlineMap.erase(nIndex); int size1 = m_CameraMap.size(); m_CameraMap.erase(nIndex); int size2 = m_CameraMap.size(); m_Conf.DelCamera(nIndex); UnLock(); ReleaseCameraID(nIndex); return TRUE; }
inline BOOL Factory::DelCamera(astring nIndex) { #if 0 FactoryCameraChangeData change; change.id = nIndex; change.type = FACTORY_CAMERA_DEL; CallCameraChange(change); Lock(); VDC_DEBUG( "%s Cleanup Begin\n",__FUNCTION__); m_CameraMap[nIndex]->Cleanup(); VDC_DEBUG( "%s Cleanup End\n",__FUNCTION__); delete m_CameraMap[nIndex]; m_CameraMap[nIndex] = NULL; m_CameraParamMap.erase(nIndex); m_CameraOnlineMap.erase(nIndex); int size1 = m_CameraMap.size(); m_CameraMap.erase(nIndex); int size2 = m_CameraMap.size(); m_Conf.DelCamera(nIndex); UnLock(); ReleaseCameraID(nIndex); #endif return TRUE; }
inline astring Factory::AddCamera(CameraParam & pParam) { #if 0 //s32 nId = GetCameraID(); astring nId = "sdfsdf";//TODO FactoryCameraChangeData change; Camera *pCamera = NULL; CameraParam pParam2; Lock(); //pParam.m_Conf.data.conf.nId = nId; m_CameraMap[nId] = new Camera(*m_pVdb, *m_pVHdfsdb, pParam); pCamera = m_CameraMap[nId]; m_CameraParamMap[nId] = pParam; m_CameraOnlineMap[nId] = 0; m_Conf.AddCamera(pParam.m_Conf, nId); UnLock(); change.id = nId; change.type = FACTORY_CAMERA_ADD; CallCameraChange(change); #endif return "adf"; }
inline BOOL Factory::StopHdfsRecord(astring nIndex) { #if 0 CameraParam pParam; FactoryCameraChangeData change; GetCameraParamById(pParam, nIndex); if (pParam.m_Conf.data.conf.HdfsRecording == 0) { return TRUE; } Lock(); pParam.m_Conf.data.conf.HdfsRecording = 0; m_CameraParamMap[nIndex] = pParam; m_Conf.UpdateCameraData(nIndex, pParam.m_Conf); if (m_CameraMap[nIndex] != NULL) { m_CameraMap[nIndex]->SetHdfsRecord(FALSE); m_CameraMap[nIndex]->StopHdfsRecord(); } UnLock(); change.id = nIndex; change.type = FACTORY_CAMERA_RECORDING_OFF; CallCameraChange(change); #endif return TRUE; }
inline BOOL StorFactory::UpdateCameraGroup(s32 nIndex, s32 nGroup) { CameraParam pParam; StorFactoryCameraChangeData change; if (nIndex <=0 || nIndex >= STOR_FACTORY_CAMERA_ID_MAX) { return FALSE; } GetCameraParamById(pParam, nIndex); if (pParam.m_Conf.data.conf.GroupId == nGroup) { return TRUE; } Lock(); pParam.m_Conf.data.conf.GroupId = nGroup; m_CameraParamMap[nIndex] = pParam; m_Conf.UpdateCameraData(nIndex, pParam.m_Conf); UnLock(); change.id = nIndex; change.type = STOR_FACTORY_CAMERA_GROUP_CHANGE; CallCameraChange(change); return TRUE; }
inline void StorFactory::run() { while(1) { ve_sleep(1000 * 90); } #if 0 CameraParamMap paramMap; /* Create the thread to update the Disk status */ while (1) { paramMap.clear(); { /* Got all the camera param */ Lock(); CameraMap::iterator it = m_CameraMap.begin(); for(; it!=m_CameraMap.end(); ++it) { s32 nIndex = (*it).first; CameraParam pParam; Camera *pCamera = m_CameraMap[nIndex]; if (pCamera == NULL) { continue;//TODO } pCamera->GetCameraParam(pParam); paramMap[nIndex] = pParam; } UnLock(); } { /* Loop all the cameraparam */ CameraParamMap::iterator it = paramMap.begin(); for(; it!=paramMap.end(); ++it) { /* Loop to check the camera and update the url */ s32 nIndex = (*it).first; (*it).second.m_wipOnline = (*it).second.CheckOnline(); if ((*it).second.m_OnlineUrl == FALSE) { (*it).second.m_wipOnlineUrl = (*it).second.UpdateUrl(); if ((*it).second.m_wipOnlineUrl == FALSE) { (*it).second.m_wipOnline = FALSE; } } } } { /* Loop all the cameraparam result and set to camera */ CameraParamMap::iterator it = paramMap.begin(); for(; it!=paramMap.end(); ++it) { /* Loop to check the camera and update the url */ s32 nIndex = (*it).first; Lock(); CameraMap::iterator it1 = m_CameraMap.find(nIndex), ite1 = m_CameraMap.end(); if (it1 == ite1) { /* the id may be delete */ UnLock(); continue; } CameraStatus bCheck = m_CameraMap[nIndex]->CheckCamera( (*it).second.m_strUrl, (*it).second.m_strUrlSubStream, (*it).second.m_bHasSubStream, (*it).second.m_wipOnline, (*it).second.m_wipOnlineUrl); StorFactoryCameraChangeData change; change.id = nIndex; switch (bCheck) { case DEV_OFF2ON: { change.type = STOR_FACTORY_CAMERA_ONLINE; m_CameraOnlineMap[nIndex] = 1; UnLock(); CallCameraChange(change); Lock(); break; } case DEV_ON2OFF: { change.type = STOR_FACTORY_CAMERA_OFFLINE; m_CameraOnlineMap[nIndex] = 0; UnLock(); CallCameraChange(change); Lock(); break; } default: { break; } } UnLock(); } } ve_sleep(1000 * 90); } #endif }
inline s32 StorFactory::AddCamera(CameraParam & pParam) { s32 nId = GetCameraID(); StorFactoryCameraChangeData change; Camera *pCamera = NULL; CameraParam pParam2; Lock(); pParam.m_Conf.data.conf.nId = nId; if (pParam.m_Conf.data.conf.nType == VSC_CAMERA_CAM) { m_CameraMap[nId] = new Camera(*m_pVdb, *m_pVHdfsdb, pParam); pCamera = m_CameraMap[nId]; }else { m_CameraMap[nId] = NULL; UnLock(); return -1; } m_CameraParamMap[nId] = pParam; m_CameraOnlineMap[nId] = 0; m_Conf.AddCamera(pParam.m_Conf, nId); UnLock(); change.id = nId; change.type = STOR_FACTORY_CAMERA_ADD; CallCameraChange(change); #if 0 /* Try to online the camera and lock */ Lock(); pCamera->GetCameraParam(pParam2); UnLock(); pParam2.m_wipOnline = pParam2.CheckOnline(); if (pParam2.m_OnlineUrl == FALSE) { pParam2.m_wipOnlineUrl = pParam2.UpdateUrl(); } /* Try to make the camera online */ Lock(); CameraStatus bCheck = pCamera->CheckCamera(pParam2.m_strUrl, pParam2.m_strUrlSubStream, pParam2.m_bHasSubStream, pParam2.m_wipOnline, pParam2.m_wipOnlineUrl); StorFactoryCameraChangeData change2; change2.id = nId; if (bCheck == DEV_OFF2ON) { change.type = STOR_FACTORY_CAMERA_ONLINE; m_CameraOnlineMap[nId] = 1; UnLock(); CallCameraChange(change); Lock(); } UnLock(); #endif return nId; }