// ServerDlg.h : header file // #pragma once #include "afxwin.h" #include "../../../Src/HttpServer.h" #include "../../Global/helper.h" class CServerDlg; class CHttpServerListenerImpl : public CHttpServerListener { private: virtual EnHandleResult OnPrepareListen(SOCKET soListen); virtual EnHandleResult OnAccept(CONNID dwConnID, SOCKET soClient); virtual EnHandleResult OnHandShake(CONNID dwConnID); virtual EnHandleResult OnReceive(CONNID dwConnID, const BYTE* pData, int iLength); virtual EnHandleResult OnSend(CONNID dwConnID, const BYTE* pData, int iLength); virtual EnHandleResult OnClose(CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode); virtual EnHandleResult OnShutdown(); virtual EnHttpParseResult OnMessageBegin(CONNID dwConnID); virtual EnHttpParseResult OnRequestLine(CONNID dwConnID, LPCSTR lpszMethod, LPCSTR lpszUrl); virtual EnHttpParseResult OnHeader(CONNID dwConnID, LPCSTR lpszName, LPCSTR lpszValue); virtual EnHttpParseResult OnHeadersComplete(CONNID dwConnID); virtual EnHttpParseResult OnBody(CONNID dwConnID, const BYTE* pData, int iLength); virtual EnHttpParseResult OnChunkHeader(CONNID dwConnID, int iLength); virtual EnHttpParseResult OnChunkComplete(CONNID dwConnID); virtual EnHttpParseResult OnMessageComplete(CONNID dwConnID); virtual EnHttpParseResult OnUpgrade(CONNID dwConnID, EnHttpUpgradeType enUpgradeType); virtual EnHttpParseResult OnParseError(CONNID dwConnID, int iErrorCode, LPCSTR lpszErrorDesc); public: void SetServer(LPCTSTR lpszName, IHttpServer* pServer) { m_strName = lpszName; m_pServer = pServer; } CStringA GetHeaderSummary(CONNID dwConnID, LPCSTR lpszSep = " ", int iSepCount = 0, BOOL bWithContentLength = TRUE); public: CHttpServerListenerImpl(CServerDlg* pDlg) : m_pDlg (pDlg) , m_pServer (nullptr) { } public: CServerDlg* m_pDlg; IHttpServer* m_pServer; CString m_strName; }; // CServerDlg dialog class CServerDlg : public CDialogEx { // Construction public: CServerDlg(CWnd* pParent = NULL); // standard constructor // Dialog Data enum { IDD = IDD_SERVER_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support virtual BOOL PreTranslateMessage(MSG* pMsg); // Implementation protected: HICON m_hIcon; // Generated message map functions virtual BOOL OnInitDialog(); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnBnClickedStart(); afx_msg void OnBnClickedStop(); afx_msg void OnBnClickedDisconnect(); afx_msg void OnBnClickedRelease(); afx_msg void OnEnChangeConnId(); afx_msg LRESULT CServerDlg::OnUserInfoMsg(WPARAM wp, LPARAM lp); afx_msg int OnVKeyToItem(UINT nKey, CListBox* pListBox, UINT nIndex); DECLARE_MESSAGE_MAP() public: void SetAppState(EnAppState state); private: CListBox m_Info; CButton m_Start; CButton m_Stop; CEdit m_ConnID; CButton m_DisConn; CButton m_Release; CButton m_RadioHttp; CButton m_RadioHttps; EnAppState m_enState; private: static const LPCTSTR ADDRESS; static const LPCTSTR HTTP_NAME; static const LPCTSTR HTTPS_NAME; static const USHORT HTTP_PORT; static const USHORT HTTPS_PORT; CHttpServerListenerImpl m_HttpListener; CHttpServerListenerImpl m_HttpsListener; CHttpServer m_HttpServer; CHttpsServer m_HttpsServer; };