void MessageProcessor::processSocket() { char* msg = zstr_recv(zmqSocket_); if (msg == nullptr) { Log::Error("zeromq recv() failed\n"); return; } std::string requestString(msg); zstr_free(&msg); std::string responseString; bool error = processMessage(requestString, responseString); if (error) { responseString = ""; } int rc = zstr_send(zmqSocket_, responseString.c_str()); if (rc != 0) { Log::vError("MessageProcessor: failed to send response\n" "request:\n%s\n\n" "response:\n%s\n\n", requestString.c_str(), responseString.c_str()); } }
////////////////////////////////////////////////////////////////////////////////////////////////////////// /// Sends the correct form of the server status value back to XML, HTML, TEXT, and PNG client requests. /// \param serverState The server status value to send. /// \param pRequestHeader The request header. /// \param client_socket The socket used for the request ////////////////////////////////////////////////////////////////////////////////////////////////////////// static void HandleServerStatusResponse(GRAPHICS_SERVER_STATE serverState, HTTPRequestHeader* pRequestHeader, NetSocket* client_socket) { char* strResquest = pRequestHeader->GetUrl(); gtASCIIString requestString(strResquest); gtASCIIString xmlSubString(".xml"); if (requestString.find(xmlSubString, 0) != -1) { SendServerStatusMessageAsXML(serverState, client_socket, requestString); return; } gtASCIIString htmlSubString(".html"); if (requestString.find(htmlSubString, 0) != -1) { SendServerStatusMessageAsHTML(serverState, client_socket); return; } gtASCIIString pngSubString(".png"); if (requestString.find(pngSubString, 0) != -1) { SendServerStatusMessageAsIMG(serverState, client_socket); return; } gtASCIIString ddsSubString(".dds"); if (requestString.find(ddsSubString, 0) != -1) { SendServerStatusMessageAsIMG(serverState, client_socket); return; } gtASCIIString txtSubString(".txt"); if (requestString.find(txtSubString, 0) != -1) { SendServerStatusMessageAsHTML(serverState, client_socket); return; } // Assume all other commands (without an extension) are text commands gtASCIIString noSubString("."); if (requestString.find(noSubString, 0) == -1) { SendServerStatusMessageAsHTML(serverState, client_socket); return; } return; }