fast/Platform/HttpService.h
2025-01-20 10:30:01 +08:00

40 lines
1.1 KiB
C++

#pragma once
#include <http.h>
class CHttpService;
class CAgvMainDialog;
class IHttpServiceListener
{
public:
virtual BOOL OnRecvRequest(CHttpService *inst, PHTTP_REQUEST request) = 0;
};
class HttpServiceListener : public IHttpServiceListener
{
public:
HttpServiceListener(CAgvMainDialog *pParentDlg) { m_pMainDialog = pParentDlg; };
public:
BOOL OnRecvRequest(CHttpService *inst, PHTTP_REQUEST request);
public:
CAgvMainDialog *m_pMainDialog;
};
class CHttpService
{
public:
CHttpService();
BOOL Create(CString strIp, INT port, IHttpServiceListener *listener, CAgvMainDialog *pParentDlg);
BOOL Delete(void);
BOOL SendRequestResp(HTTP_REQUEST_ID req_id, INT status, LPCSTR reason, LPCSTR type, HANDLE file, LPVOID mem, DWORD mem_size);
DWORD RecvRequestBody(HTTP_REQUEST_ID req_id, HANDLE file, char *mem, DWORD mem_size);
BOOL DoReceiveRequests();
BOOL GetRemoteAddr(PHTTP_REQUEST request, CString &text);
public:
static UINT AFX_CDECL RecvRequestThread(LPVOID param);
private:
HANDLE m_req_queue;
LPBYTE m_req_buffer;
UINT m_req_buffer_size;
CWinThread *m_thread;
IHttpServiceListener *m_listener;
CAgvMainDialog *m_pMainDialog;
};