#ifndef WEB_SERVER__H_ #define WEB_SERVER__H_ #ifdef _WIN32 #pragma once #endif class HWebServer : public HHttpHandler { public: enum { WS_READ_BYTES = (256 * 1024 - 1) // 256Kbyte }; HWebServer(); ~HWebServer(); inline void SetHomeDir(const char * pszDir) { m_strHomeDir = pszDir; } const char * GetContentType(const char * pszRequestUri); void AddStaticDir(const char * pszDir); protected: int SendResponse(); int SendFileHeader(); int SendOpenedFile(); int OnSendRetryToTransport(); int OnPacketProcessing(const char * pBodyData, int nBodySize); virtual int OnPrepareRequest(const char * pBodyData, int nBodySize) { return 1; } virtual int OnReceivedRequest(const char * pBodyData, int nBodySize) { return -1; } bool IsStaticRequest(); protected: HString m_strHomeDir; HStrList m_listStaticDir; char * m_pszResponse; char * m_pszResponseOffset; int m_nResponseRemainSize; HFile m_file; off_t m_nFileSize; char * m_pFileBuffer; char * m_pFileBufferOffset; long m_nRemainBufferSize; }; #endif // WEB_SERVER__H_