static void TestTCPClientKeepAlive_SendData(CTcpClient& tcpClient, const CStringBuffer& buffer) { CStringBuffer sBuffer; CByteBuffer bBuffer; dword numBytesSend; sBuffer.FormatString(__FILE__LINE__ _T("##%05d## %s"), buffer.GetLength(), buffer.GetString()); sBuffer.convertToByteBuffer(bBuffer); tcpClient.SendData(bBuffer.get_Buffer(), bBuffer.get_BufferSize(), &numBytesSend); assert(numBytesSend == bBuffer.get_BufferSize()); }
UINT #else DWORD #endif WINAPI CTcpClient::WorkerThreadProc(LPVOID pv) { TRACE("---------------> Client Worker Thread 0x%08X started <---------------\n", ::GetCurrentThreadId()); CTcpClient* pClient = (CTcpClient*)pv; HANDLE hEvents[] = {pClient->m_evSocket, pClient->m_evBuffer, pClient->m_evWorker}; pClient->m_rcBuffer.Malloc(pClient->m_dwSocketBufferSize); while(pClient->HasStarted()) { DWORD retval = ::WSAWaitForMultipleEvents(3, hEvents, FALSE, WSA_INFINITE, FALSE); if(retval == WSA_WAIT_EVENT_0) { if(!pClient->ProcessNetworkEvent()) { if(pClient->HasStarted()) pClient->Stop(); break; } } else if(retval == WSA_WAIT_EVENT_0 + 1) { if(!pClient->SendData()) { if(pClient->HasStarted()) pClient->Stop(); break; } } else if(retval == WSA_WAIT_EVENT_0 + 2) break; else ASSERT(FALSE); } TRACE("---------------> Client Worker Thread 0x%08X stoped <---------------\n", ::GetCurrentThreadId()); return 0; }