//-------------------------------------------------------------------------------- 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; }
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; }