Listing 7: Server thread handler
void srv_cThread::Handler() { if (Listener.InError()) { return; } while (TRUE) { unsigned long cbData; nmpipe_eRetcode rc = Listener.Connect(INFINITE); if (rc == nmpipeTimeOut) { break; } else if (rc != nmpipeOK) { SetEvent(hEventShutdown); break; } if (Listener.Read(&cbData, sizeof(cbData)) != nmpipeOK) { Listener.Disconnect(); continue; } char *pData = new char [cbData]; if (Listener.Read(pData, cbData) != nmpipeOK) { delete pData; Listener.Disconnect(); continue; } if (strcmp(pData, "shutdown") == 0) { SetEvent(hEventShutdown); } strrev(pData); if (Listener.Write(&cbData, sizeof(cbData)) != nmpipeOK) { delete pData; Listener.Disconnect(); continue; } if (Listener.Write(pData, cbData) != nmpipeOK) { delete pData; Listener.Disconnect(); continue; } delete pData; Listener.Disconnect(); } return; } //End of File