示例#1
0
BOOL 
CUdpCommClient::Do()
{
	DWORD dwIdx;
	HANDLE awsaEvent[3];

	//
	awsaEvent[0] = m_hSockEvent;
	awsaEvent[1] = m_hWrEvent;
	awsaEvent[2] = m_hQuit;

	//
	while (FALSE == CThreadClient::IsEnd())
	{
		dwIdx = ::WaitForMultipleObjects(3, awsaEvent, FALSE, m_dwIdleTime);

		switch (dwIdx)
		{
			case WAIT_OBJECT_0:
				OnWinSockEvent();
				break;

			case (WAIT_OBJECT_0 + 1):
				HandleWrite();
				break;

			case (WAIT_OBJECT_0 + 2):
				break;

			case WAIT_TIMEOUT:
				IdleWrite();
				break;
		}

		//
		if (0 < m_tSessionTimeout && difftime(time(NULL), m_tTimeout) > m_tSessionTimeout)
		{
			m_tTimeout = time(NULL);
			HandleIdle();
		}
	}

	return TRUE;
}
示例#2
0
void tTVPApplication::HandleMessage() {
	MSG msg = {0};
	if( !ProcessMessage(msg) ) {
		HandleIdle(msg);
	}
}