Donatien Garnier / NetServicesLPC1768

Dependents:   SimpleLCDClock readCard2Twitter_http AnalogClock_StepperMotor_NTP ServoCamV1

Committer:
donatien
Date:
Mon May 24 10:24:38 2010 +0000
Revision:
0:a2dd0ba6cd2d
Child:
1:7043cc0db03c

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:a2dd0ba6cd2d 1 #ifndef HTTP_REQUEST_HANDLER_H
donatien 0:a2dd0ba6cd2d 2 #define HTTP_REQUEST_HANDLER_H
donatien 0:a2dd0ba6cd2d 3
donatien 0:a2dd0ba6cd2d 4 #include "if/net/net.h"
donatien 0:a2dd0ba6cd2d 5 #include "api/TcpSocket.h"
donatien 0:a2dd0ba6cd2d 6 //#include "HttpServer.h"
donatien 0:a2dd0ba6cd2d 7
donatien 0:a2dd0ba6cd2d 8 #include "mbed.h"
donatien 0:a2dd0ba6cd2d 9
donatien 0:a2dd0ba6cd2d 10 #define HTTP_REQUEST_TIMEOUT 5000
donatien 0:a2dd0ba6cd2d 11
donatien 0:a2dd0ba6cd2d 12 #include <string>
donatien 0:a2dd0ba6cd2d 13 using std::string;
donatien 0:a2dd0ba6cd2d 14
donatien 0:a2dd0ba6cd2d 15 #include <map>
donatien 0:a2dd0ba6cd2d 16 using std::map;
donatien 0:a2dd0ba6cd2d 17
donatien 0:a2dd0ba6cd2d 18 class HttpRequestHandler : public NetService
donatien 0:a2dd0ba6cd2d 19 {
donatien 0:a2dd0ba6cd2d 20 public:
donatien 0:a2dd0ba6cd2d 21 HttpRequestHandler(const char* rootPath, const char* path, TcpSocket* pTcpSocket);
donatien 0:a2dd0ba6cd2d 22 virtual ~HttpRequestHandler();
donatien 0:a2dd0ba6cd2d 23
donatien 0:a2dd0ba6cd2d 24 //protected:
donatien 0:a2dd0ba6cd2d 25 virtual void doGet() = 0;
donatien 0:a2dd0ba6cd2d 26 virtual void doPost() = 0;
donatien 0:a2dd0ba6cd2d 27 virtual void doHead() = 0;
donatien 0:a2dd0ba6cd2d 28
donatien 0:a2dd0ba6cd2d 29 virtual void onReadable() = 0; //Data has been read
donatien 0:a2dd0ba6cd2d 30 virtual void onWriteable() = 0; //Data has been written & buf is free
donatien 0:a2dd0ba6cd2d 31 virtual void onTimeout(); //Connection has timed out
donatien 0:a2dd0ba6cd2d 32 virtual void onClose() = 0; //Connection is closing
donatien 0:a2dd0ba6cd2d 33
donatien 0:a2dd0ba6cd2d 34 virtual void close(); //Close socket and destroy data
donatien 0:a2dd0ba6cd2d 35
donatien 0:a2dd0ba6cd2d 36 protected:
donatien 0:a2dd0ba6cd2d 37 map<string, string>& reqHeaders() /*const*/;
donatien 0:a2dd0ba6cd2d 38 string& path() /*const*/;
donatien 0:a2dd0ba6cd2d 39 int dataLen() const;
donatien 0:a2dd0ba6cd2d 40 int readData(char* buf, int len);
donatien 0:a2dd0ba6cd2d 41 string& rootPath() /*const*/;
donatien 0:a2dd0ba6cd2d 42
donatien 0:a2dd0ba6cd2d 43 void setErrCode(int errc);
donatien 0:a2dd0ba6cd2d 44 void setContentLen(int len);
donatien 0:a2dd0ba6cd2d 45
donatien 0:a2dd0ba6cd2d 46 map<string, string>& respHeaders();
donatien 0:a2dd0ba6cd2d 47 int writeData(const char* buf, int len);
donatien 0:a2dd0ba6cd2d 48
donatien 0:a2dd0ba6cd2d 49 void setTimeout(int ms);
donatien 0:a2dd0ba6cd2d 50 void resetTimeout();
donatien 0:a2dd0ba6cd2d 51
donatien 0:a2dd0ba6cd2d 52 private:
donatien 0:a2dd0ba6cd2d 53 void readHeaders(); //Called at instanciation
donatien 0:a2dd0ba6cd2d 54 void writeHeaders(); //Called at the first writeData call
donatien 0:a2dd0ba6cd2d 55 void onTcpSocketEvent(TcpSocketEvent e);
donatien 0:a2dd0ba6cd2d 56
donatien 0:a2dd0ba6cd2d 57 TcpSocket* m_pTcpSocket;
donatien 0:a2dd0ba6cd2d 58 map<string, string> m_reqHeaders;
donatien 0:a2dd0ba6cd2d 59 map<string, string> m_respHeaders;
donatien 0:a2dd0ba6cd2d 60 string m_rootPath;
donatien 0:a2dd0ba6cd2d 61 string m_path;
donatien 0:a2dd0ba6cd2d 62 int m_errc; //Response code
donatien 0:a2dd0ba6cd2d 63
donatien 0:a2dd0ba6cd2d 64 Timeout m_watchdog;
donatien 0:a2dd0ba6cd2d 65 int m_timeout;
donatien 0:a2dd0ba6cd2d 66
donatien 0:a2dd0ba6cd2d 67 bool m_closed;
donatien 0:a2dd0ba6cd2d 68 bool m_headersSent;
donatien 0:a2dd0ba6cd2d 69
donatien 0:a2dd0ba6cd2d 70 int readLine(char* str, int maxLen);
donatien 0:a2dd0ba6cd2d 71
donatien 0:a2dd0ba6cd2d 72 };
donatien 0:a2dd0ba6cd2d 73
donatien 0:a2dd0ba6cd2d 74 #endif