2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS HTTP Daemon
4 * FILE: include/socket.h
15 #define MAX_PENDING_CONNECTS 4 // The backlog allowed for listen()
22 class CServerClientSocket
;
23 class CServerClientThread
;
26 typedef CSocket
* LPCSocket
;
27 typedef CClientSocket
* LPCClientSocket
;
28 typedef CServerClientSocket
* LPCServerClientSocket
;
29 typedef CServerClientThread
* LPCServerClientThread
;
30 typedef CServerSocket
* LPCServerSocket
;
34 ESocket() { Description
= NULL
; }
35 ESocket(LPTSTR description
) { Description
= description
; }
36 LPTSTR
what() { return Description
; }
41 class ESocketWinsock
: public ESocket
{
43 ESocketWinsock(LPTSTR description
) { Description
= description
; }
46 class ESocketDll
: public ESocket
{
48 ESocketDll(LPTSTR description
) { Description
= description
; }
51 class ESocketOpen
: public ESocket
{
53 ESocketOpen(LPTSTR description
) { Description
= description
; }
56 class ESocketClose
: public ESocket
{
58 ESocketClose(LPTSTR description
) { Description
= description
; }
61 class ESocketSend
: public ESocket
{
63 ESocketSend(LPTSTR description
) { Description
= description
; }
66 class ESocketReceive
: public ESocket
{
68 ESocketReceive(LPTSTR description
) { Description
= description
; }
76 virtual SOCKET
GetSocket();
77 virtual VOID
SetSocket(SOCKET socket
);
78 virtual SOCKADDR_IN
GetSockAddrIn();
79 virtual VOID
SetSockAddrIn(SOCKADDR_IN sockaddrin
);
80 virtual VOID
SetEvents(LONG lEvents
);
81 virtual LONG
GetEvents();
82 virtual VOID
SetPort( UINT nPort
) {};
85 virtual INT
Transmit( LPSTR lpsBuffer
, UINT nLength
) { return 0; };
86 virtual INT
Receive(LPSTR lpsBuffer
, UINT nLength
) { return 0; };
87 virtual INT
SendText( LPSTR lpsStr
) { return 0; };
90 SOCKADDR_IN SockAddrIn
;
98 class CServerClientSocket
: public CSocket
{
100 CServerClientSocket() {};
101 CServerClientSocket(LPCServerSocket lpServerSocket
);
102 CServerSocket
*GetServerSocket();
103 virtual INT
Transmit( LPSTR lpsBuffer
, UINT nLength
);
104 virtual INT
Receive(LPSTR lpsBuffer
, UINT nLength
);
105 virtual INT
SendText( LPSTR lpsText
);
106 virtual VOID
MessageLoop();
107 virtual VOID
OnRead() {};
108 //virtual VOID OnWrite() {};
109 virtual VOID
OnClose() {};
111 LPCServerSocket ServerSocket
;
114 class CServerClientThread
: public CThread
{
116 CServerClientThread() {};
117 CServerClientThread(CServerClientSocket
*socket
);
118 virtual ~CServerClientThread();
120 CServerClientSocket
*ClientSocket
;
123 class CServerSocket
: public CSocket
{
126 virtual ~CServerSocket();
127 virtual VOID
SetPort( UINT nPort
);
129 virtual VOID
Close();
130 virtual LPCServerClientSocket
OnGetSocket(LPCServerSocket lpServerSocket
);
131 virtual LPCServerClientThread
OnGetThread(LPCServerClientSocket lpSocket
);
132 virtual VOID
OnAccept( LPCServerClientThread lpThread
) {};
133 virtual VOID
MessageLoop();
134 VOID
InsertClient(LPCServerClientThread lpClient
);
135 VOID
RemoveClient(LPCServerClientThread lpClient
);
137 CList
<LPCServerClientThread
> Connections
;
140 #endif /* __SOCKET_H */