Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: SmartRemote WifiFlexManager SmartRemote E7
Fork of HTTPServer by
Diff: HTTPRequestHandler.h
- Revision:
- 3:d6224049b3bf
- Parent:
- 1:6b7472d5e9ee
- Child:
- 4:d065642c32cc
--- a/HTTPRequestHandler.h Sun May 26 23:22:36 2013 +0000
+++ b/HTTPRequestHandler.h Tue May 28 01:56:14 2013 +0000
@@ -1,26 +1,91 @@
/* HTTPRequestHandler.h */
+/*
+Copyright (c) 2013 Henry Leinen (henry[dot]leinen [at] online [dot] de)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
#ifndef __HTTPREQUESTHANDLER_H__
#define __HTTPREQUESTHANDLER_H__
#include "mbed.h"
#include "HTTPConnection.h"
+#include <map>
+
+typedef std::map<const char*,const char*> HTTPHeaders;
+
+/** class HTTPRequestHandler is the base class for HTTP Handler request implementations.
+*
+*/
class HTTPRequestHandler
{
+ protected:
+ HTTPConnection::HTTPMessage& msg;
+ TCPSocketConnection& tcp;
+
public:
- /**
- public constructor
+ /** Constructor for HTTPRequestHandler objects.
*/
- HTTPRequestHandler();
+ HTTPRequestHandler(HTTPConnection::HTTPMessage&, TCPSocketConnection&);
+
+ /** Destructor for HTTPRequestHandler objects.
+ */
+ virtual ~HTTPRequestHandler();
+
+ /** Handler function which will be used by the HTTPServer to serve requests.
+ * @param msg : Request Message information.
+ * @param tcp : The socket which represents the active connection to the client.
+ */
+ virtual void handleRequest();
- /**
- destructor
- */
- ~HTTPRequestHandler();
+ /** Handler function which will handle errors and return errors correctly
+ * @param errorCode : The error code returned by the HTTP Server to represent the error condition.
+ * @param msg : Request Message information.
+ * @param tcp : The socket which represents the active connection to the client.
+ */
+ virtual void handleError(int errorCode, HTTPHeaders* header = NULL);
+
+ /** Function sends the response header which consists of the return code and the headers section
+ * the response header also contains the length (in bytes) of the body. You need to send the body
+ * right after calling this function. Please note that you do not need to consider the terminating
+ * CR+LF after your last CR+LF. This will be sent automatically once \c endResponse is called. Also
+ * the Length given in \c nLen does not need to consider this additional chars. It will also be
+ * automatically added in \c startResponse. if you need to change the headers, please do NOT
+ * specify the \c Content-Length Header. This is done automatically be the function.
+ */
+ void startResponse(int returnCode, int nLen, HTTPHeaders* header = NULL);
+ void processResponse(int nLen, char* body );
+ void endResponse();
+
+ protected:
+ /** Handler function to serve GET requests
+ */
+ virtual int handleGetRequest() = 0;
+ /** Handler function to serve PUT requests
+ */
+// virtual int handlePutRequest() = 0;
- void HandleRequest(HTTPMessage& );
-
+ /** Handler function to serve POST requests
+ */
+// virtual int handlePostRequest() = 0;
+
};
#endif // __HTTPREQUESTHANDLER_H__
\ No newline at end of file
