2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS HTTP Daemon
4 * FILE: include/socket.h
8 #include <msvcrt/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 */