rendered paste bodybool MessageHandler::CanSendSocket(int fd)
{
OutputDebugText("Entering MessageHandler::CanSendSocket\n");
// ASSUME: fd > stdout's fd
fd_set writeFDs;
timeval timeout = mTimeout; // Copy in case select() modifies the value
FD_SET(fd, &writeFDs);
select(fd+1, NULL, &writeFDs, NULL, &timeout);
OutputDebugText("Exiting MessageHandler::CanSendSocket\n");
return FD_ISSET(fd, &writeFDs);
}
bool MessageHandler::SendClientRequest(int fd, const ClientRequest& request)
{
if (!CanSendSocket(fd))
{
OutputDebugText("Unable to send request\n");
return false;
}
OutputDebugText("a\n");
std::stringstream sendBuffer;
sendBuffer << gGlobalData.GetConstants()->GetMethod(request.mMethod) << " " << request.mTransactionID
<< " " << request.mSequence << " " << request.mDataLength;
OutputDebugText("b\n");
if (request.mDataLength > 0)
{
sendBuffer << "\r\n\r\n" << request.mData;
}
else
{
sendBuffer << "\r\n\r\n\r\n";
}
OutputDebugText("c\n");
// Hopefully it is not a fatal assumption that MTU is 2k.
if (send(fd, sendBuffer.str().c_str(), sendBuffer.str().length(), 0) != sendBuffer.str().length())
{
OutputDebugText("Error sending message, an incorrect number of bytes were transmitted\n");
return false;
}
OutputDebugText("Successfully sent message\n");
return true;
}