/****************************************************************************
Desc:
****************************************************************************/
void F_IOBuffer::notifyComplete(
	RCODE					completionRc)
{
	f_assert( m_bPending);
	
	m_bPending = FALSE;
	m_bCompleted = TRUE;
	m_completionRc = completionRc;
	m_uiEndTime = FLM_GET_TIMER();
	m_uiElapsedTime = FLM_TIMER_UNITS_TO_MILLI( 
		FLM_ELAPSED_TIME( m_uiEndTime, m_uiStartTime));

	if( m_fnCompletion)
	{
		m_fnCompletion( this, m_pvData);
		m_fnCompletion = NULL;
		m_pvData = NULL;
	}

	if( m_pBufferMgr)
	{
		f_assert( m_eList == MGR_LIST_PENDING);
		f_mutexLock( m_pBufferMgr->m_hMutex);
		
		m_pBufferMgr->unlinkFromList( this);
		m_pBufferMgr->linkToList( &m_pBufferMgr->m_pFirstUsed, this);
		
		if( RC_OK( m_pBufferMgr->m_completionRc) && RC_BAD( completionRc))
		{
			m_pBufferMgr->m_completionRc = completionRc;
		}
		
		f_mutexUnlock( m_pBufferMgr->m_hMutex);		
	}
}
Exemple #2
0
/****************************************************************************
Desc:
****************************************************************************/
void TestBase::endTest(
	FLMBOOL	bPassed)
{
	FLMUINT	uiEndTime = FLM_GET_TIMER();
	FLMUINT	uiElapsedMilli = FLM_TIMER_UNITS_TO_MILLI( 
										FLM_ELAPSED_TIME( uiEndTime, m_uiStartTime));

	displayTestResults( bPassed, uiElapsedMilli);
	if (m_bLog)
	{
		logTestResults( bPassed);
	}

	(void)m_pReporter->recordUnitTestResults(
		m_pszTestName, bPassed, m_szFailInfo);
}
/****************************************************************************
Desc: Retrieves the Checkpoint info for the database passed in.  This assumes
		global mutex has already been locked.
*****************************************************************************/
void F_Database::getCPInfo(
	XFLM_CHECKPOINT_INFO *		pCheckpointInfo)
{
	FLMUINT	uiElapTime;
	FLMUINT	uiCurrTime;

	flmAssert( pCheckpointInfo);

	f_memset( pCheckpointInfo, 0, sizeof( XFLM_CHECKPOINT_INFO));
	if (m_pCPInfo)
	{
		pCheckpointInfo->bRunning = m_pCPInfo->bDoingCheckpoint;
		if (pCheckpointInfo->bRunning)
		{
			if (m_pCPInfo->uiStartTime)
			{
				uiCurrTime = FLM_GET_TIMER();

				uiElapTime = FLM_ELAPSED_TIME( uiCurrTime,
							m_pCPInfo->uiStartTime);
				pCheckpointInfo->ui32RunningTime = (FLMUINT32)FLM_TIMER_UNITS_TO_MILLI( uiElapTime);
			}
			else
			{
				pCheckpointInfo->ui32RunningTime = 0;
			}
			pCheckpointInfo->bForcingCheckpoint =
				m_pCPInfo->bForcingCheckpoint;
			if (m_pCPInfo->uiForceCheckpointStartTime)
			{
				uiCurrTime = FLM_GET_TIMER();
				uiElapTime = FLM_ELAPSED_TIME( uiCurrTime,
							m_pCPInfo->uiForceCheckpointStartTime);
				pCheckpointInfo->ui32ForceCheckpointRunningTime = 
					(FLMUINT32)FLM_TIMER_UNITS_TO_MILLI( uiElapTime);
			}
			else
			{
				pCheckpointInfo->ui32ForceCheckpointRunningTime = 0;
			}
			pCheckpointInfo->ui32ForceCheckpointReason =
				(FLMUINT32)m_pCPInfo->iForceCheckpointReason;
			pCheckpointInfo->bWritingDataBlocks =
				m_pCPInfo->bWritingDataBlocks;
			pCheckpointInfo->ui32LogBlocksWritten =
				(FLMUINT32)m_pCPInfo->uiLogBlocksWritten;
			pCheckpointInfo->ui32DataBlocksWritten =
				(FLMUINT32)m_pCPInfo->uiDataBlocksWritten;
		}
		pCheckpointInfo->ui32BlockSize = (FLMUINT32)m_uiBlockSize;
		pCheckpointInfo->ui32DirtyCacheBytes =
			(FLMUINT32)(m_uiDirtyCacheCount * m_uiBlockSize);
		if (m_pCPInfo->uiStartWaitTruncateTime)
		{
			uiCurrTime = FLM_GET_TIMER();

			uiElapTime = FLM_ELAPSED_TIME( uiCurrTime,
						m_pCPInfo->uiStartWaitTruncateTime);
			pCheckpointInfo->ui32WaitTruncateTime = 
				(FLMUINT32)FLM_TIMER_UNITS_TO_MILLI( uiElapTime);
		}
		else
		{
			pCheckpointInfo->ui32WaitTruncateTime = 0;
		}
	}
}