DWORD WaitForMultipleObjectsWithMessageLoop(DWORD dwHandles, HANDLE szHandles[], DWORD dwMilliseconds, DWORD dwWakeMask, DWORD dwFlags) { DWORD dwResult = WAIT_FAILED; DWORD dwBeginTime = (dwMilliseconds == INFINITE) ? INFINITE : ::timeGetTime(); while(TRUE) { int iWaitTime; if(dwBeginTime != INFINITE) { iWaitTime = dwMilliseconds - (GetTimeGap32(dwBeginTime)); if(iWaitTime <= 0) { dwResult = WAIT_TIMEOUT; break; } } else iWaitTime = INFINITE; dwResult = ::MsgWaitForMultipleObjectsEx(dwHandles, szHandles, iWaitTime, dwWakeMask, dwFlags); ASSERT(dwResult != WAIT_FAILED); if(dwResult == (WAIT_OBJECT_0 + dwHandles)) PeekMessageLoop(); else break; } return dwResult; }
BOOL CTcpAgent::GetConnectPeriod(CONNID dwConnID, DWORD& dwPeriod) { BOOL isOK = TRUE; TSocketObj* pSocketObj = FindSocketObj(dwConnID); if(TSocketObj::IsExist(pSocketObj)) dwPeriod = GetTimeGap32(pSocketObj->connTime); else isOK = FALSE; return isOK; }
BOOL CUdpServer::GetConnectPeriod(CONNID dwConnID, DWORD& dwPeriod) { BOOL isOK = TRUE; TUdpSocketObj* pSocketObj = FindSocketObj(dwConnID); if(pSocketObj != nullptr) dwPeriod = GetTimeGap32(pSocketObj->connTime); else isOK = FALSE; return isOK; }