//-----------------------------------------------------------------------------
//	Purpose: Destroy a matchmaking session
//-----------------------------------------------------------------------------
uint CXboxSystem::DeleteSession( XboxHandle_t hSession, bool bAsync, AsyncHandle_t *pAsyncHandle )
{
	XOVERLAPPED *pOverlapped = NULL;

	if ( bAsync )
	{
		AsyncResult_t *pResult = InitializeAsyncResult( &pAsyncHandle );
		pOverlapped = &pResult->overlapped;
	}

	// Delete the session
	uint ret = XSessionDelete( hSession, pOverlapped );
	CloseHandle( hSession );

	return ret;
}
Exemple #2
0
//--------------------------------------------------------------------------------------
// Name: DeleteSession()
// Desc: Remove the session
//--------------------------------------------------------------------------------------
GS_BOOL SessionSrv::DeleteSession()
{
#if defined(_XBOX) || defined(_XENON)
    // Don't delete the session if it was never created
    if( m_hSession == INVALID_HANDLE_VALUE )
    {
        return FALSE;
    }

	// End the session
	CTaskID id = 0;
    GS_DWORD ret = XSessionDelete(
        m_hSession,
        Master::G()->GetTaskMgr()->AddTask(EGSTaskType_SessionDelete,this,&id) );
	Master::G()->GetTaskMgr()->StartTask(id,ret);

    if( ret != ERROR_IO_PENDING )
    {
        Master::G()->Log( "XSessionDelete failed with error %d", ret );
		return FALSE;
    }
#endif
	return TRUE;
}