예제 #1
0
//--------------------------------------------------------------------------------
bool Game::StartUp()
{
	//variable temporal para almacenar el hWnd recibirlo del createWindow y 
	//pasarlo a InitDX (Al implementar Renderer)
	HWND hWnd=NULL;

	m_pkWindows = new Window(m_hInstance);

	if (!m_pkWindows)
		return false;

	m_pkWindows->createWindow(800, 600, hWnd);

	m_pkRenderer = new Renderer(hWnd);
	
	if(!m_pkRenderer)
		return false;

	if(!m_pkRenderer->InitDX(hWnd))
		return false;

	if (!OnStartUp())
		return false;

	return true;
}
예제 #2
0
BOOL CNetServer::OnStart()
{
	if(!CBaseServer::OnStart())
		return FALSE;

	if(m_hIOCP!=NULL)
		return FALSE;

	CNetSocket::NetStartup();

	m_OverLappedObjectPool.Create(m_IOCPObjectPoolSize,m_IOCPObjectPoolGrowSize,m_IOCPObjectPoolGrowLimit);
	m_EventRouterPool.Create(m_EventRouterPoolSize,m_EventRouterPoolGrowSize,m_EventRouterPoolGrowLimit);

	m_hIOCP = CreateIoCompletionPort( INVALID_HANDLE_VALUE, NULL, 0, 0 );
	if( m_hIOCP == NULL )
	{
		PrintNetLog(0xffffffff,_T("(%d)创建完成端口失败(%d)!"),GetID(),GetLastError());		
		return FALSE;
	}

	SYSTEM_INFO	si;
	GetSystemInfo( &si );
	m_IOCPThreadCount = si.dwNumberOfProcessors * m_IOCPThreadNumPerCPU;

	m_pIOCPThreads = new CIOCPThread[m_IOCPThreadCount];

	for( int i = 0;i < m_IOCPThreadCount;i ++ )
	{
		m_pIOCPThreads[i].SetIOCPHandle(m_hIOCP);
		m_pIOCPThreads[i].Start();
	}	
	if(!OnStartUp())
	{		
		return FALSE;
	}
	return TRUE;
}