2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS HTTP Daemon
4 * FILE: include/socket.h
8 #include <crtdll/stdio.h>
16 #define MAX_PENDING_CONNECTS 4 // The backlog allowed for listen()
23 class CServerClientSocket;
24 class CServerClientThread;
27 typedef CSocket* LPCSocket;
28 typedef CClientSocket* LPCClientSocket;
29 typedef CServerClientSocket* LPCServerClientSocket;
30 typedef CServerClientThread* LPCServerClientThread;
31 typedef CServerSocket* LPCServerSocket;
35 ESocket() { Description = NULL; }
36 ESocket(LPTSTR description) { Description = description; }
37 LPTSTR what() { return Description; }
42 class ESocketWinsock : public ESocket {
44 ESocketWinsock(LPTSTR description) { Description = description; }
47 class ESocketDll : public ESocket {
49 ESocketDll(LPTSTR description) { Description = description; }
52 class ESocketOpen : public ESocket {
54 ESocketOpen(LPTSTR description) { Description = description; }
57 class ESocketClose : public ESocket {
59 ESocketClose(LPTSTR description) { Description = description; }
62 class ESocketSend : public ESocket {
64 ESocketSend(LPTSTR description) { Description = description; }
67 class ESocketReceive : public ESocket {
69 ESocketReceive(LPTSTR description) { Description = description; }
77 virtual SOCKET GetSocket();
78 virtual VOID SetSocket(SOCKET socket);
79 virtual SOCKADDR_IN GetSockAddrIn();
80 virtual VOID SetSockAddrIn(SOCKADDR_IN sockaddrin);
81 virtual VOID SetEvents(LONG lEvents);
82 virtual LONG GetEvents();
83 virtual VOID SetPort( UINT nPort) {};
86 virtual INT Transmit( LPSTR lpsBuffer, UINT nLength) { return 0; };
87 virtual INT Receive(LPSTR lpsBuffer, UINT nLength) { return 0; };
88 virtual INT SendText( LPSTR lpsStr) { return 0; };
91 SOCKADDR_IN SockAddrIn;
99 class CServerClientSocket : public CSocket {
101 CServerClientSocket() {};
102 CServerClientSocket(LPCServerSocket lpServerSocket);
103 CServerSocket *GetServerSocket();
104 virtual INT Transmit( LPSTR lpsBuffer, UINT nLength);
105 virtual INT Receive(LPSTR lpsBuffer, UINT nLength);
106 virtual INT SendText( LPSTR lpsText);
107 virtual VOID MessageLoop();
108 virtual VOID OnRead() {};
109 //virtual VOID OnWrite() {};
110 virtual VOID OnClose() {};
112 LPCServerSocket ServerSocket;
115 class CServerClientThread : public CThread {
117 CServerClientThread() {};
118 CServerClientThread(CServerClientSocket *socket);
119 virtual ~CServerClientThread();
121 CServerClientSocket *ClientSocket;
124 class CServerSocket : public CSocket {
127 virtual ~CServerSocket();
128 virtual VOID SetPort( UINT nPort);
130 virtual VOID Close();
131 virtual LPCServerClientSocket OnGetSocket(LPCServerSocket lpServerSocket);
132 virtual LPCServerClientThread OnGetThread(LPCServerClientSocket lpSocket);
133 virtual VOID OnAccept( LPCServerClientThread lpThread) {};
134 virtual VOID MessageLoop();
135 VOID InsertClient(LPCServerClientThread lpClient);
136 VOID RemoveClient(LPCServerClientThread lpClient);
138 CList<LPCServerClientThread> Connections;
141 #endif /* __SOCKET_H */