Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DWORD CTMapSvrModule::WorkThread()
- {
- BOOL bRun = TRUE;
- while(bRun)
- {
- DWORD dwCompKey = COMP_NULL;
- DWORD dwIoBytes = 0;
- LPOVERLAPPED pOV = NULL;
- if(!GetQueuedCompletionStatus(
- m_hIocpWork,
- &dwIoBytes,
- &dwCompKey,
- &pOV, INFINITE) &&
- GetLastError() != WAIT_TIMEOUT && GetLastError() != 1236L )
- {
- switch(dwCompKey)
- {
- case COMP_SESSION :
- if(pOV)
- {
- CTMapSession *pSession = (CTMapSession *) ((COverlappedEx *) pOV)->m_pOBJ;
- BYTE bTYPE = ((COverlappedEx *) pOV)->m_bTYPE;
- switch(bTYPE)
- {
- case TOV_SSN_RECV :
- if(pSession->m_bSessionType == SESSION_SERVER)
- {
- LogEvent("WorkThread CompletionStatus %d\n", GetLastError());
- }
- if(pSession->m_bSessionType != SESSION_SERVER)
- OnInvalidSession(pSession);
- break;
- // ***** IOCP »çżëąý Áß ľËľĆł»±â Čűµç Ăąąř° ±¸ą® (ĽąöĂř ĽĽĽÇ Áľ·á) *****
- //
- // Ľąö°ˇ ¸ŐŔú closesocket()Ŕ» ČŁĂâÇĎż© ĽĽĽÇŔ» Áľ·áÇŃ °ćżěŔ̸ç
- // WSARecv()°ˇ ČŁĂâµČ »óĹÂżˇĽ¸¸ ŔĚ ÄÚµĺ·Î µéľîżŔ¸ç
- // ¸đµç żŔąö·¦ żŔĆŰ·ˇŔĚĽÇŔĚ Áľ·áµČ »óĹÂṞ́⠶§ą®żˇ
- // ŔĚ ĽŇÄĎ ÇÚµé°ú °ü·ĂµČ µĄŔĚŸ´Â IOCPĹĄżˇ ł˛ľĆŔÖÁö ľĘ´Ů.
- // µű¶óĽ ŔĚ ˝ş·ąµĺżˇĽ´Â ÇŘ´ç ĽĽĽÇżˇ °ü·ĂµČ ŔŰľ÷ ¸í·ÉŔ» ´őŔĚ»ó ĽöÇŕÇĎÁö ľĘ±â ¶§ą®żˇ
- // ´Ů¸Ą ˝ş·ąµĺ°ˇ Çă¶ôÇѴٸé ŔĚ ±¸ą®żˇĽ ĽĽĽÇ Ć÷ŔÎĹ͸¦ »čÁ¦Çصµ ą«ąćÇĎ´Ů.
- // ĽĽĽÇŔ» »čÁ¦ ÇϴµĄ °ˇŔĺ ÁÁŔş ÁöÁˇŔ̹ǷΠŔüĂĽ ˝Ă˝şĹŰ Ľł°č˝Ă
- // Á¤»óŔűŔÎ ĽĽĽÇ Áľ·á´Â ĽąöĂřżˇĽ ¸ŐŔú ĽĽĽÇŔ» Áľ·á˝ĂĹ°µµ·Ď Ľł°čÇĎ´Â °ÍŔĚ ľČŔüÇĎ´Ů.
- break;
- case TOV_SSN_SEND:
- OnSendComplete(pSession, 0);
- break;
- }
- }
- break;
- }
- }
- else if(pOV)
- {
- BYTE bTYPE = ((COverlappedEx *) pOV)->m_bTYPE;
- switch(dwCompKey)
- {
- case COMP_SESSION :
- {
- CTMapSession *pSession = (CTMapSession *) ((COverlappedEx *) pOV)->m_pOBJ;
- switch(bTYPE)
- {
- case TOV_SSN_RECV :
- if(pSession)
- ProcessSession( pSession, dwIoBytes);
- break;
- case TOV_SSN_SEND :
- if(pSession)
- OnSendComplete( pSession, dwIoBytes);
- break;
- }
- }
- break;
- }
- }
- else
- {
- switch(dwCompKey)
- {
- case COMP_EXIT :
- {
- PostQueuedCompletionStatus(
- m_hIocpWork, 0,
- COMP_EXIT, NULL);
- bRun = FALSE;
- }
- break;
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement