⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpd.h

📁 ReactOS是一些高手根据Windows XP的内核编写出的类XP。内核实现机理和API函数调用几乎相同。甚至可以兼容XP的程序。喜欢研究系统内核的人可以看一看。
💻 H
字号:
/*
 * 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 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -