![]() |
SocketMessageHandler() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Private Function |
Declared in: AsyncSocket.h |
static LRESULT CALLBACK SocketMessageHandler( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam);
Our window proc
if (m_bShuttingDown) return TRUE; try { //first get the socket CAsyncSocket* pSocket; pSocket=GetSocketByID((int)wParam); //Are we closing ? BOOL bIgnore; if (pSocket && pSocket->IsClosing() && uMsg!=WM_SOCKET_DELETE) bIgnore=TRUE; else bIgnore=FALSE; //Protect the call try { if (pSocket && !bIgnore) //Socket exists switch (uMsg) { case WM_SOCKET_FORCED: return pSocket->OnSocketReceive(0); break; case WM_SOCKET_GENERAL: if (WSAGETSELECTEVENT(lParam)==FD_READ) return pSocket->OnSocketReceive(WSAGETSELECTERROR(lParam)); else if (WSAGETSELECTEVENT(lParam)==FD_WRITE) return pSocket->SocketWrite(WSAGETSELECTERROR(lParam)); else if (WSAGETSELECTEVENT(lParam)==FD_OOB) return pSocket->OnSocketOOB(WSAGETSELECTERROR(lParam)); else if (WSAGETSELECTEVENT(lParam)==FD_CLOSE) return pSocket->SocketClosed(WSAGETSELECTERROR(lParam)); break; case WM_SOCKET_CONNECT: if (WSAGETSELECTEVENT(lParam)==FD_CONNECT) return pSocket->SocketConnected(WSAGETSELECTERROR(lParam)); break; case WM_SOCKET_ACCEPT: if (WSAGETSELECTEVENT(lParam)==FD_ACCEPT) return pSocket->OnSocketAccept(WSAGETSELECTERROR(lParam)); break; case WM_TIMER: //Do we have a timer ? if (pSocket->HasTimeout()) //Inform the socket return pSocket->OnSocketTimeout(); else { //Error ReportStaticError("CAsyncSocket_Class","Timeout from previous socket!"); //Exit return FALSE; } case WM_SOCKET_DELETE: //Delete the socket pSocket->OnSocketDelete(); //Exit return TRUE; default: /* Passes it on if unproccessed */ return (int)(DefWindowProc(hwnd, uMsg, wParam, lParam)); } else return (int)(DefWindowProc(hwnd, uMsg, wParam, lParam)); } ERROR_HANDLER_STATIC(CAsyncSocket_Class,"SocketMessageHandler - Proc") //Exit return TRUE; } ERROR_HANDLER_STATIC_RETURN(CAsyncSocket_Class,"SocketMessageHandler",TRUE)
![]() |
Site content copyright © 2003 Komodia LTD.. See the About page for additional notices. This page last updated: 24 Feb 2003. |