示例#1
0
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;

}
示例#2
0
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;
}
示例#3
0
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;
}