/*................无用...............*/ BOOL CWorkThread::Accept(CListenSocket& ListenSocket) { CAsyncSocket asAccept; if(!ListenSocket.Accept(asAccept)) return FALSE; CString strOut; strOut.Format(_T("CPoolThread::Accept() socket :%d Accept!\n"),asAccept.m_hSocket); TRACE(strOut); //线程池是否已满 if(!WorkItem::IsPoolFull()) { if(fpQueueUserWorkItem != NULL) { // fpQueueUserWorkItem(WorkItem::ClientWorkItemThread, (LPVOID)asAccept.Detach(), WT_EXECUTELONGFUNCTION); } else { //启动WorkItem类的ClientWorkThread线程 AfxBeginThread(WorkItem::ClientWorkThread, (LPVOID)asAccept.Detach()); } } else { // refuse request,close socket!拒绝客户端请求,关闭socket asAccept.Close(); } return TRUE; }
DWORD HandleEvent( DWORD mask ){ SOCKADDR SockAddr = {0}; int nLen = sizeof(SOCKADDR); CSocket sock = m_ListenSock.Accept(SockAddr, nLen); CSession* pSession = SESSIONS::New( sock, mask, new Connection ); if( pSession ) { SESSIONS::Delete( *pSession ); } return 0; }