Team E1

Fork of HTTPServer by Sam Kirsch

Committer:
leihen
Date:
Sun May 26 20:13:28 2013 +0000
Revision:
0:7a2421e63e74
Child:
1:6b7472d5e9ee
First draft, which does not actually handle a request.
; Framework is working though.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
leihen 0:7a2421e63e74 1 /* HTTPServer.cpp */
leihen 0:7a2421e63e74 2 #ifndef __HTTPSERVER_H__
leihen 0:7a2421e63e74 3 #define __HTTPSERVER_H__
leihen 0:7a2421e63e74 4 #include "mbed.h"
leihen 0:7a2421e63e74 5 #include "HTTPConnection.h"
leihen 0:7a2421e63e74 6
leihen 0:7a2421e63e74 7 #include <TCPSocketConnection.h>
leihen 0:7a2421e63e74 8 #include <TCPSocketServer.h>
leihen 0:7a2421e63e74 9
leihen 0:7a2421e63e74 10 /** Class HTTPServer for WiFly Interface Library
leihen 0:7a2421e63e74 11 *
leihen 0:7a2421e63e74 12 */
leihen 0:7a2421e63e74 13 class HTTPServer
leihen 0:7a2421e63e74 14 {
leihen 0:7a2421e63e74 15
leihen 0:7a2421e63e74 16 public:
leihen 0:7a2421e63e74 17 HTTPServer(Serial* pDbg = NULL);
leihen 0:7a2421e63e74 18 ~HTTPServer();
leihen 0:7a2421e63e74 19 /*
leihen 0:7a2421e63e74 20 struct handlersComp //Used to order handlers in the right way
leihen 0:7a2421e63e74 21 {
leihen 0:7a2421e63e74 22 bool operator() (const string& handler1, const string& handler2) const
leihen 0:7a2421e63e74 23 {
leihen 0:7a2421e63e74 24 //The first handler is longer than the second one
leihen 0:7a2421e63e74 25 if (handler1.length() > handler2.length())
leihen 0:7a2421e63e74 26 return true; //Returns true if handler1 is to appear before handler2
leihen 0:7a2421e63e74 27 else if (handler1.length() < handler2.length())
leihen 0:7a2421e63e74 28 return false;
leihen 0:7a2421e63e74 29 else //To avoid the == case, sort now by address
leihen 0:7a2421e63e74 30 return ((&handler1)>(&handler2));
leihen 0:7a2421e63e74 31 }
leihen 0:7a2421e63e74 32 };
leihen 0:7a2421e63e74 33 */
leihen 0:7a2421e63e74 34 ///Adds a handler
leihen 0:7a2421e63e74 35 /**
leihen 0:7a2421e63e74 36 Appends a handler to the handlers list
leihen 0:7a2421e63e74 37 @param T : class which will be instanciated to serve these requests
leihen 0:7a2421e63e74 38 @param path : requests starting with this path will be served using this handler
leihen 0:7a2421e63e74 39 */
leihen 0:7a2421e63e74 40 // template<typename T>
leihen 0:7a2421e63e74 41 // void addHandler(const char* path) //Template decl in header
leihen 0:7a2421e63e74 42 // { m_lpHandlers[path] = &T::inst; }
leihen 0:7a2421e63e74 43
leihen 0:7a2421e63e74 44 ///Starts listening
leihen 0:7a2421e63e74 45 /**
leihen 0:7a2421e63e74 46 Binds server to a specific port and starts listening. This member prepares the internal variables and the server socket
leihen 0:7a2421e63e74 47 and terminates after successfull initialization
leihen 0:7a2421e63e74 48 @param port : port on which to listen for incoming connections
leihen 0:7a2421e63e74 49 @returns : -1 if an unrecoverable error occured, or 0 if everything was ok.
leihen 0:7a2421e63e74 50 */
leihen 0:7a2421e63e74 51 int start(int port = 80);
leihen 0:7a2421e63e74 52
leihen 0:7a2421e63e74 53 /**
leihen 0:7a2421e63e74 54 Performs the regular polling of the server component. Needs to be called cyclically.
leihen 0:7a2421e63e74 55 The function will internally check whether new connections are requested by a client and will also poll all existing client connections.
leihen 0:7a2421e63e74 56 */
leihen 0:7a2421e63e74 57 int poll();
leihen 0:7a2421e63e74 58
leihen 0:7a2421e63e74 59 private:
leihen 0:7a2421e63e74 60
leihen 0:7a2421e63e74 61 TCPSocketServer* m_pSvr;
leihen 0:7a2421e63e74 62 bool m_bServerListening;
leihen 0:7a2421e63e74 63
leihen 0:7a2421e63e74 64 Serial* m_pDbg;
leihen 0:7a2421e63e74 65
leihen 0:7a2421e63e74 66 };
leihen 0:7a2421e63e74 67
leihen 0:7a2421e63e74 68 #endif //__HTTPSERVER_H__