Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers...
[reactos.git] / modules / rosapps / applications / net / roshttpd / include / httpd.h
diff --git a/modules/rosapps/applications/net/roshttpd/include/httpd.h b/modules/rosapps/applications/net/roshttpd/include/httpd.h
new file mode 100644 (file)
index 0000000..ff85940
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ * COPYRIGHT:   See COPYING in the top level directory
+ * PROJECT:     ReactOS HTTP Daemon
+ * FILE:        include/httpd.h
+ */
+#ifndef __HTTPD_H
+#define __HTTPD_H
+
+#include <socket.h>
+#include <thread.h>
+#include <http.h>
+
+#define HTTPD_START     WM_USER + 1
+#define HTTPD_STOP      WM_USER + 2
+#define HTTPD_SUSPEND   WM_USER + 3
+#define HTTPD_RESUME    WM_USER + 4
+
+enum HTTPdState {
+    hsStopped = 0,
+    hsRunning,
+    hsSuspended
+};
+
+class CHttpDaemon;
+
+class CHttpClient : public CServerClientSocket {
+public:
+       CHttpClient();
+    CHttpClient(LPCServerSocket lpServerSocket);
+       virtual void OnRead();
+       //virtual void OnWrite();
+       virtual void OnClose();
+    HANDLE ThreadHandle;
+    DWORD ThreadId;
+    CHttpParser Parser;
+    void SplitUri(const LPSTR lpsUri, LPSTR lpsHost, LPSTR lpsResource, LPSTR lpsParams);
+       void SplitResource(const LPSTR lpsResource, LPSTR lpsPath, LPSTR lpsFilename, LPSTR lpsExtension);
+    void ProcessRequest();
+    void SendFile(const LPSTR lpsFilename);
+    void Report(LPCSTR lpsCode, const LPSTR lpsStr);
+private:
+       BOOL bStop;
+       LPSTR lpsBuffer;
+       LONG nBufferSize;
+       //    unsigned __int64 nTotalRead;
+       unsigned long long nTotalRead;
+       //      unsigned __int64 nFileSize;
+       unsigned long long nFileSize;
+    HANDLE hFile;
+};
+typedef CHttpClient* LPCHttpClient;
+
+class CHttpClientThread : public CServerClientThread {
+public:
+       CHttpClientThread() {};
+       CHttpClientThread(LPCServerClientSocket Socket);
+       virtual void Execute();
+};
+typedef CHttpClientThread* LPCHttpClientThread;
+
+class CHttpDaemon : public CServerSocket {
+public:
+    CHttpDaemon();
+    virtual ~CHttpDaemon();
+       HTTPdState GetState() const;
+       virtual BOOL Start();
+       virtual BOOL Stop();
+       virtual LPCServerClientSocket OnGetSocket(LPCServerSocket lpServerSocket);
+       virtual LPCServerClientThread OnGetThread(LPCServerClientSocket Socket);
+       virtual void OnAccept(const LPCServerClientThread lpThread);
+private:
+       HTTPdState State;
+};
+typedef CHttpDaemon* LPCHttpDaemon;
+
+class CHttpDaemonThread : public CThread {
+public:
+       CHttpDaemonThread() {};
+       virtual void Execute();
+private:
+       CHttpDaemon *Daemon;
+};
+typedef CHttpDaemonThread* LPCHttpDaemonThread;
+
+#endif /* __HTTPD_H */