From: <mik...@us...> - 2004-01-01 10:44:15
|
Update of /cvsroot/sharedaemon/sharedaemon-ui-web/src/server/http/manager In directory sc8-pr-cvs1:/tmp/cvs-serv9267/src/server/http/manager Modified Files: HttpProcessor.cpp HttpProcessor.h Log Message: 01/01/2004 Mikael Barbeaux * HAPPY NEW YEAR !!!! :P * Started to implement http processing code. Index: HttpProcessor.cpp =================================================================== RCS file: /cvsroot/sharedaemon/sharedaemon-ui-web/src/server/http/manager/HttpProcessor.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- HttpProcessor.cpp 30 Dec 2003 10:45:10 -0000 1.1 +++ HttpProcessor.cpp 1 Jan 2004 10:44:11 -0000 1.2 @@ -21,6 +21,7 @@ #include "HttpManager.h" #include "../TextWriter.h" + /** * Creates a HttpProcessor with the given id. */ @@ -46,25 +47,79 @@ // Set the cancellation point setCancelPoint(); // Retrieve the connection - HttpSocket *socket = theManager->getNextConnection(); + HttpSocket *connection = theManager->getNextConnection(); // No connection ? - if(socket == 0) + if(connection == 0) continue; - // Processes the connection. + /** + * Now we are able to process the connection. + * First of all, we need to retrieve the request + * sent by the client, and to parse it to test + * if it's a http compliant request. + */ HttpRequest request; - socket->receiveHttpRequest(request); - TextWriter *writer = new TextWriter; - *writer << "<html><body>Your request has been "; - *writer << "processed by HttpProcessor nb "; - *writer << (int)id; - *writer << "</body></html>\n"; - writer->close(); - HttpResponse resp(writer); - resp.setContentType("text/html"); - // send response - socket->sendHttpResponse(resp); - socket->close(); - delete socket; + try { + connection->receiveHttpRequest(request); + + /** + * Then, depending the method used in this + * request, we process it to obtain the + * response. + */ + HttpResponse *response; + if(request.getMethod() == GET) + response = processGet(request, connection); + else if(request.getMethod() == POST) + response = processPost(request, connection); + else if(request.getMethod() == HEAD) + response = processHead(request, connection); + else + response = processError(); + + + /** + * Now we can send the response to the client. + */ + connection->sendHttpResponse(*response); + delete response; + } + catch(Exception& http) { + } + + connection->close(); + delete connection; } } + +/** + * Processes a GET method. + */ +HttpResponse *HttpProcessor::processGet(HttpRequest& request, + HttpSocket *client) { + return new HttpResponse(new TextWriter()); +} + +/** + * Processes a POST method. + */ +HttpResponse *HttpProcessor::processPost(HttpRequest& request, + HttpSocket *client) { + return new HttpResponse(new TextWriter()); +} + +/** + * Processes a HEAD method. + */ +HttpResponse *HttpProcessor::processHead(HttpRequest& request, + HttpSocket *client) { + return new HttpResponse(new TextWriter()); +} + +/** + * Process a HTTP error + */ +HttpResponse *HttpProcessor::processError() { + return new HttpResponse(new TextWriter()); +} + Index: HttpProcessor.h =================================================================== RCS file: /cvsroot/sharedaemon/sharedaemon-ui-web/src/server/http/manager/HttpProcessor.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- HttpProcessor.h 30 Dec 2003 10:45:10 -0000 1.1 +++ HttpProcessor.h 1 Jan 2004 10:44:11 -0000 1.2 @@ -22,6 +22,10 @@ #include "../../../thread/Thread.h" #include "../../../exceptions/ThreadException.h" +#include "../HttpRequest.h" +#include "../HttpResponse.h" +#include "../HttpConstants.h" +#include "../HttpSocket.h" /** * Defines a processor for HttpConnection. @@ -34,6 +38,42 @@ // identifiant for this thread unsigned int id; + + /** + * Processes a GET method. + * + * @param request + * @param client + * @return HttpResponse* + */ + HttpResponse *processGet(HttpRequest& request, + HttpSocket *client); + + /** + * Processes a POST method. + * + * @param request + * @param client + * @return HttpResponse* + */ + HttpResponse *processPost(HttpRequest& request, + HttpSocket *client); + + /** + * Processes a HEAD method. + * + * @param request + * @param client + * @return HttpResponse* + */ + HttpResponse *processHead(HttpRequest& request, + HttpSocket *client); + + /** + * Process a HTTP error + */ + HttpResponse *processError(); + public: |