Fork of HttpServer_snapshot_mbed-os library
Fork of HttpServer_snapshot_mbed-os by
Diff: HTTPRequestHandler.cpp
- Revision:
- 13:d3571c244759
- Parent:
- 11:0700755d64ae
--- a/HTTPRequestHandler.cpp Tue Jun 06 01:39:39 2017 +0000 +++ b/HTTPRequestHandler.cpp Wed Jun 07 05:53:36 2017 +0000 @@ -27,10 +27,6 @@ #define HTTP_REQUEST_TIMEOUT 5000 -//HTTPRequestHandler::HTTPRequestHandler(const char* rootPath, const char* path, TCPSocket* pTCPSocket) : NetService(), -// m_pTCPSocket(pTCPSocket), m_reqHeaders(), m_respHeaders(), -// m_rootPath(rootPath), m_path(path), m_errc(200), -// m_watchdog(), m_timeout(0),**/ m_closed(false), m_headersSent(false) //OK HTTPRequestHandler::HTTPRequestHandler(const char* rootPath, const char* path, TCPSocket* pTCPSocket) : m_pTCPSocket(pTCPSocket), m_reqHeaders(), m_respHeaders(), m_rootPath(rootPath), m_path(path), m_errc(200), m_closed(false), m_headersSent(false) @@ -40,8 +36,6 @@ #endif //Read & parse headers readHeaders(); -//* m_pTCPSocket->setOnEvent(this, &HTTPRequestHandler::onTCPSocketEvent); -//* setTimeout(HTTP_REQUEST_TIMEOUT); #ifdef _DEBUG_REQUEST_HANDLER printf("+++(HTTPRequestHandler) init end \r\n"); #endif @@ -65,12 +59,6 @@ if(m_closed) return; m_closed = true; //Prevent recursive calling or calling on an object being destructed by someone else - /** m_watchdog.detach(); **/ -//* onClose(); -//* m_pTCPSocket->resetOnEvent(); -//* m_pTCPSocket->close(); -//* delete m_pTCPSocket; //Can safely destroy socket -//* NetService::close(); } map<string, string>& HTTPRequestHandler::reqHeaders() //const @@ -128,20 +116,6 @@ } return m_pTCPSocket->send((char *)buf, len); } -/** -void HTTPRequestHandler::setTimeout(int ms) -{ - m_timeout = 1000*ms; - resetTimeout(); -} -**/ -/** -void HTTPRequestHandler::resetTimeout() -{ - m_watchdog.detach(); - m_watchdog.attach_us<HTTPRequestHandler>(this, &HTTPRequestHandler::onTimeout, m_timeout); -} -**/ void HTTPRequestHandler::readHeaders() { @@ -159,21 +133,21 @@ void HTTPRequestHandler::writeHeaders() //Called at the first writeData call { - //Response line - sprintf(line, "HTTP/1.1 %d MbedInfo\r\n", m_errc); //Not a violation of the standard not to include the descriptive text - m_pTCPSocket->send(line, strlen(line)); + int idx = 0; + + idx += sprintf(&line[idx], "HTTP/1.1 %d MbedInfo\r\n", m_errc); //Not a violation of the standard not to include the descriptive text map<string,string>::iterator it; while( !m_respHeaders.empty() ) { it = m_respHeaders.begin(); - sprintf(line, "%s: %s\r\n", (*it).first.c_str(), (*it).second.c_str() ); + idx += sprintf(&line[idx], "%s: %s\r\n", (*it).first.c_str(), (*it).second.c_str() ); #ifdef _DEBUG_REQUEST_HANDLER - printf("\r\n+++(HTTPRequestHandler)%s", line); + printf("\r\n+++(HTTPRequestHandler)%s", &line[idx]); #endif - m_pTCPSocket->send(line, strlen(line)); m_respHeaders.erase(it); } - m_pTCPSocket->send("\r\n",2); //End of head + idx += sprintf(&line[idx], "\r\n"); //End of head + m_pTCPSocket->send(line, idx); } int HTTPRequestHandler::readLine(char* str, int maxLen) @@ -199,36 +173,4 @@ *str = 0; return len; } -/** -void HTTPRequestHandler::onTCPSocketEvent(TCPSocketEvent e) -{ - //printf("\r\nEvent %d in HTTPRequestHandler\r\n", e); - printf("\r\n+++(HTTPRequestHandler)Event in HTTPRequestHandler\r\n"); - if(m_closed) - { - printf("\r\n+++(HTTPRequestHandler)WARN: Discarded\r\n"); - return; - } - - switch(e) - { - case TCPSOCKET_READABLE: - resetTimeout(); - onReadable(); - break; - case TCPSOCKET_WRITEABLE: - resetTimeout(); - onWriteable(); - break; - case TCPSOCKET_CONTIMEOUT: - case TCPSOCKET_CONRST: - case TCPSOCKET_CONABRT: - case TCPSOCKET_ERROR: - case TCPSOCKET_DISCONNECTED: - DBG("\r\nConnection error in handler\r\n"); - close(); - break; - } -} -**/ \ No newline at end of file