void CSocket::Close() { if (m_hSocket != INVALID_SOCKET) { CancelBlockingCall(); VERIFY(AsyncSelect(0)); CAsyncSocket::Close(); m_hSocket = INVALID_SOCKET; } }
BOOL ClientSocket::OnMessagePending() { MSG msg; if (::PeekMessage(&msg, NULL, WM_TIMER, WM_TIMER, PM_REMOVE)) { if (msg.wParam == (UINT)m_nTimerID) { // Remove the message and call CancelBlockingCall. //::PeekMessage(&msg, NULL, WM_TIMER, WM_TIMER, PM_REMOVE); CancelBlockingCall(); ::PostMessage(m_pDlg->GetSafeHwnd(), WM_USER_TIMEOUT, 0, 0); return FALSE; // No need for idle time processing. }; if (msg.wParam == (UINT)m_nTimerReconnect) { // Remove the message and call CancelBlockingCall. //::PeekMessage(&msg, NULL, WM_TIMER, WM_TIMER, PM_REMOVE); CancelBlockingCall(); ::PostMessage(m_pDlg->GetSafeHwnd(), WM_USER_TIMEOUT, 0, 0); return FALSE; // No need for idle time processing. }; }; return CSocket::OnMessagePending(); }
BOOL CTimeOutSocket::OnMessagePending() { // TODO: Add your specialized code here and/or call the base class MSG msg; if(::PeekMessage(&msg, NULL, WM_TIMER, WM_TIMER, PM_NOREMOVE)) { if (msg.wParam == (UINT) m_nTimerID) { // Remove the message and call CancelBlockingCall. ::PeekMessage(&msg, NULL, WM_TIMER, WM_TIMER, PM_REMOVE); CancelBlockingCall(); return FALSE; // No need for idle time processing. }; }; //if (GetLastError() == WSAEWOULDBLOCK) //{ // ::PeekMessage(&msg, NULL, WM_TIMER, WM_TIMER, PM_REMOVE); // CancelBlockingCall(); // return FALSE; // No need for idle time processing. //} return CSocket::OnMessagePending(); }
BOOL MSocket::OnMessagePending() { MSG msg; // Watch for our timer message // the -1 is critical, gets msgs created with NULL hwnd, wasn't working // before I had -1 there. if(::PeekMessage(&msg, (HWND)-1, WM_TIMER, WM_TIMER, PM_NOREMOVE)) { // If our timer expired... if (msg.wParam == (UINT) m_nTimerID && m_nTimerID) { // Remove the message ::PeekMessage(&msg, NULL, WM_TIMER, WM_TIMER, PM_REMOVE); // And cancel the call CancelBlockingCall(); return FALSE; } } // Call base class function return CSocket::OnMessagePending(); }