- Main Page
- Namespaces
- Classes
- Files
- Directories

- File List
- File Members

# WebServer.h

    00001 #pragma once
    00002
    00003 #include <afxsock.h>
    00004 #include <atlcoll.h>
    00005
    00006 #define UTF8(str) UTF16To8(TToW(str))
    00007 #define UTF8Arg(str) UrlEncode(UTF8(str))
    00008
    00009 #define CMD_SETPOS "-1"
    00010 #define CMD_SETVOLUME "-2"
    00011
    00012
    00013 class CWebServerSocket;
    00014 class CWebClientSocket;
    00015 class CMainFrame;
    00016
    00017 class CWebServer
    00018 {
    00019         CMainFrame* m_pMainFrame;
    00020         int m_nPort;
    00021
    00022         DWORD ThreadProc();
    00023     static DWORD WINAPI StaticThreadProc(LPVOID lpParam);
    00024     DWORD m_ThreadId;
    00025     HANDLE m_hThread;
    00026
    00027         CAutoPtrList<CWebClientSocket> m_clients;
    00028
    00029         typedef bool (CWebClientSocket::*RequestHandler)(CStringA& hdr, CStringA& body, CStringA& mime);
    00030         static CAtlMap<CString, RequestHandler, CStringElementTraits<CString> > m_internalpages;
    00031         static CAtlMap<CString, UINT, CStringElementTraits<CString> > m_downloads;
    00032         static CAtlMap<CStringA, CStringA, CStringElementTraits<CStringA> > m_mimes;
    00033         CPath m_webroot;
    00034
    00035         CAtlMap<CString, CString, CStringElementTraits<CString> > m_cgi;
    00036         bool CallCGI(CWebClientSocket* pClient, CStringA& hdr, CStringA& body, CStringA& mime);
    00037
    00038 public:
    00039         CWebServer(CMainFrame* pMainFrame, int nPort = 13579);
    00040         virtual ~CWebServer();
    00041
    00042         static void Deploy(CString dir);
    00043
    00044         bool ToLocalPath(CString& path, CString& redir);
    00045         bool LoadPage(UINT resid, CStringA& str, CString path = _T(""));
    00046
    00047         void OnAccept(CWebServerSocket* pServer);
    00048         void OnClose(CWebClientSocket* pClient);
    00049         void OnRequest(CWebClientSocket* pClient, CStringA& reshdr, CStringA& resbody);
    00050 };