|
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:
|