ソースの整理中ですが、利用はできます。 大きなファイルはできないかもしれません。

Dependencies:   EthernetInterface HttpServer TextLCD expatlib mbed-rpc mbed-rtos mbed Socket lwip-eth lwip-sys lwip

Fork of giken9_HTMLServer_Sample by Yasushi TAUCHI

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers HTTPRequestHandler.h Source File

HTTPRequestHandler.h

00001 
00002 /*
00003 Copyright (c) 2010 Donatien Garnier (donatiengar [at] gmail [dot] com)
00004 
00005 Permission is hereby granted, free of charge, to any person obtaining a copy
00006 of this software and associated documentation files (the "Software"), to deal
00007 in the Software without restriction, including without limitation the rights
00008 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
00009 copies of the Software, and to permit persons to whom the Software is
00010 furnished to do so, subject to the following conditions:
00011 
00012 The above copyright notice and this permission notice shall be included in
00013 all copies or substantial portions of the Software.
00014 
00015 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00016 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00017 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
00018 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00019 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00020 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
00021 THE SOFTWARE.
00022 */
00023 
00024 /**
00025 HTTP Request Handler header file.
00026 */
00027 
00028 #ifndef HTTP_REQUEST_HANDLER_H
00029 #define HTTP_REQUEST_HANDLER_H
00030 
00031 //#include "HTTPServer.h"
00032 
00033 #include "mbed.h"
00034 #include "EthernetInterface.h"
00035 
00036 #include <string>
00037 using std::string;
00038 
00039 #include <map>
00040 using std::map;
00041 
00042 ///HTTP Server's generic request handler
00043 class HTTPRequestHandler
00044 {
00045 public:
00046     ///Instantiated by the HTTP Server
00047     HTTPRequestHandler(const char* rootPath, const char* path, TCPSocketConnection* pTCPSocketConnection);
00048     virtual ~HTTPRequestHandler();
00049 
00050 //protected:
00051     virtual void doGet() = 0;
00052     virtual void doPost() = 0;
00053     virtual void doHead() = 0;
00054 
00055     virtual void onReadable() = 0; //Data has been read
00056     virtual void onWriteable() = 0; //Data has been written & buf is free
00057     virtual void onTimeout(); //Connection has timed out
00058     virtual void onClose() = 0; //Connection is closing
00059 
00060     virtual void close (); //Close socket and destroy data
00061 
00062 protected:
00063     // map<string, string>& reqHeaders() /*const*/;
00064     void reqHeaders(string *key,string *value,unsigned char *count);
00065     string& path() /*const*/;
00066     int dataLen() const;
00067     int readData(char* buf, int len);
00068     string& rootPath() /*const*/;
00069 
00070     void setErrCode(int errc);
00071     void setContentLen(int len);
00072 
00073     // map<string, string>& respHeaders();
00074     void respHeaders(string *key,string *value,unsigned char *count );
00075 
00076     int writeData(const char* buf, int len);
00077     char* getAddress(void);
00078     string& getRequestData(void);
00079     void addRespHeaders(string key,string value);
00080 
00081     void readReqData();
00082 
00083 //* void setTimeout(int ms);
00084 //*  void resetTimeout();
00085 
00086 private:
00087     void readHeaders(); //Called at instanciation
00088     void writeHeaders(); //Called at the first writeData call
00089     //**void onTCPSocketEvent(/**TCPSocketEvent e**/);
00090 
00091     TCPSocketConnection* m_pTCPSocketConnection;
00092     //map<string, string> m_reqHeaders;
00093     //map<string, string> m_respHeaders;
00094     string req_headers_key[10];
00095     string req_headers_value[10];
00096     unsigned char req_headers_count;
00097     string resp_headers_key[10];
00098     string resp_headers_value[10];
00099     unsigned char resp_headers_count;
00100     string m_rootPath;
00101     string m_path;
00102     string m_reqData;
00103 
00104     int m_errc; //Response code
00105 
00106 //*  Timeout m_watchdog;
00107 //*  int m_timeout;
00108 
00109     bool m_closed;
00110     bool m_headersSent;
00111 
00112     int readLine(char* str, int maxLen);
00113 int clength;
00114 };
00115 
00116 #endif
00117 
00118