Files
2026-05-20 03:08:08 +09:00

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_