Пример #1
0
void TimerMgr::uninit()
{
	if (NULL != m_mutex)
	{
		(void)VOS_MutexLock(m_mutex);
	}
	m_bStop = true;
	m_TimerMap.clear();
	if (NULL != m_mutex)
	{
		(void)VOS_MutexUnlock(m_mutex);
	}
	
	if(VOS_NULL != m_threadHandle)
	{
		(void)VOS_ThreadJoin(m_threadHandle);
		m_threadHandle = NULL;
	}
	if (VOS_NULL != m_mutex)
	{
		(void)VOS_DestroyMutex(m_mutex);
		m_mutex = NULL;
	}
	m_TimerCBFunc = NULL;
}
Пример #2
0
/*******************************************************************************
  Function:       CNVSTimer::exit()
  Description:    退出定时检测线程
  Calls:            
  Called By:      
  Input:          无 
  Output:         无 
  Return:         无 
*******************************************************************************/
void CNVSTimer::exit()
{
    if(NULL == m_pVosThread)
    {
        IVS_RUN_LOG_ERR("NVSTimer exit: m_pVosThread is null");
        return;
    }

    //先停止线程
    this->m_bExit = VOS_TRUE;
    
    errno = 0;   
    long ret_val = VOS_ThreadJoin(m_pVosThread);
    if (ret_val != VOS_OK)
    {
        IVS_RUN_LOG_ERR("Wait timer thread exit failed. ret_val(%ld). error(%d):%s", ret_val, errno, strerror(errno));
    }

    //释放内存
    VOS_free(m_pVosThread);
    m_pVosThread = VOS_NULL;

    //再释放资源
    clearTimer();

    //释放锁
    (void)VOS_DestroyMutex(m_pMutexListOfTrigger);
    m_pMutexListOfTrigger = VOS_NULL;

    IVS_DBG_LOG("FILE(%s)LINE(%d): CNVSTimer::exit: exit complete.", _TIMER_FL_);
  
    return;
};
IVS_INT32 CSDKDecoderMgr::CleanupSDK()
{
	if(!m_bInit)
	{
		return IVS_TVWALL_INIT_NO;
	}
	m_bThreadExit = TRUE;
	m_bInit = FALSE;
	VOS_ThreadJoin(m_pVosThread);
	if(NULL!=m_pVosThread)
	{
		VOS_free(m_pVosThread);
		m_pVosThread = NULL;
	}
	//清除登录信息
	(void)VOS_MutexLock(m_pDecoderInfoMapMutex);
	for(SDK_DECODER_INFO_MAP::iterator ite=m_decoderInfoMap.begin();ite!=m_decoderInfoMap.end();ite++)
	{
		SDK_DECODER_INFO* pInfo = dynamic_cast<SDK_DECODER_INFO*>(ite->second);//lint !e611
		if(NULL!=pInfo)
		{
			//////////////////////////////////////////////////////////////////////////
			//2013-1-28 高书明 先屏蔽HWPuSDK相关函数,与BP的dll冲突
			//(void)IVS_PU_Logout(pInfo->ulIdentifyID);
			//////////////////////////////////////////////////////////////////////////
			pInfo->bOnline = FALSE;
			pInfo->ulIdentifyID = 0;
		}
	}
	(void)VOS_MutexUnlock(m_pDecoderInfoMapMutex);
	m_pCallBackFun = NULL;
	m_pUserData = NULL;
	//////////////////////////////////////////////////////////////////////////
	//2013-1-28 高书明 先屏蔽HWPuSDK相关函数,与BP的dll冲突
	//BOOL bSucc = IVS_PU_Cleanup();
	//return bSucc ? IVS_SUCCEED:IVS_FAIL;
	return IVS_FAIL;
	//////////////////////////////////////////////////////////////////////////
}
Пример #4
0
TimerMgr::~TimerMgr(void)
{
	try
	{
		m_bStop = true;
		m_TimerMap.clear();

		if(VOS_NULL != m_threadHandle)
		{
			(void)VOS_ThreadJoin(m_threadHandle);
			m_threadHandle = NULL;
		}
		if (VOS_NULL != m_mutex)
		{
			(void)VOS_DestroyMutex(m_mutex);
			m_mutex = NULL;
		}
		m_bStop = false;

		m_TimerCBFunc = NULL;
	}
	catch(...){}
}
CSDKDecoderMgr::~CSDKDecoderMgr(void)
{
	m_bThreadExit = TRUE;
	m_pCallBackFun = NULL;
	m_pUserData = NULL;

	
	VOS_ThreadJoin(m_pVosThread);
	try
	{
		CSDKDecoderMgr::RemoveDecMgrObj(this);
		RemoveDecoderInfo();
	}
	catch (...)
	{
	}	
	VOS_DestroyMutex(m_pDecoderInfoMapMutex);
	m_pDecoderInfoMapMutex = NULL;
	if(NULL!=m_pVosThread)
	{
		VOS_free(m_pVosThread);
		m_pVosThread = NULL;
	}
}