40 lines
1.1 KiB
C
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;
|
||
|
};
|