1 ////////////////////////////////////////////////////////////////////////////////
2 // Scorched3D (c) 2000-2009
4 // This file is part of Scorched3D.
6 // Scorched3D is free software; you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; either version 2 of the License, or
9 // (at your option) any later version.
11 // Scorched3D is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License
17 // along with Scorched3D; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 ////////////////////////////////////////////////////////////////////////////////
21 #if !defined(__INCLUDE_NetServerTCPReadh_INCLUDE__)
22 #define __INCLUDE_NetServerTCPReadh_INCLUDE__
24 #include <net/NetInterface.h>
25 #include <net/NetServerTCPProtocol.h>
27 class NetServerTCPRead
30 NetServerTCPRead(unsigned int id
,
32 NetServerTCPProtocol
*protocol
,
33 NetMessageHandler
*messageHandler
,
35 virtual ~NetServerTCPRead();
39 void addMessage(NetMessage
*message
);
40 unsigned int getIpAddress();
42 static unsigned int getIpAddressFromSocket(TCPsocket socket
);
47 bool disconnect_
, sentDisconnect_
;
49 SDLNet_SocketSet sockSet_
;
50 NetServerTCPProtocol
*protocol_
;
51 NetMessageHandler
*messageHandler_
;
52 SDL_mutex
*outgoingMessagesMutex_
;
53 SDL_Thread
*sendThread_
;
54 SDL_Thread
*recvThread_
;
55 SDL_Thread
*ctrlThread_
;
56 std::list
<NetMessage
*> newMessages_
;
57 unsigned int startCount_
;
59 void actualCtrlThreadFunc();
60 void actualSendRecvThreadFunc(bool send
);
63 static int ctrlThreadFunc(void *);
64 static int sendThreadFunc(void *);
65 static int recvThreadFunc(void *);