55 lines
1.0 KiB
C++
55 lines
1.0 KiB
C++
|
|
#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_
|