git-svn-id: https://scorched3d.svn.sourceforge.net/svnroot/scorched3d/trunk/scorched...
[scorched3d/parasti.git] / src / common / net / NetServerTCPRead.h
blobd0c77a7718c5b9041991c2793b4ea634d07fb69d
1 ////////////////////////////////////////////////////////////////////////////////
2 // Scorched3D (c) 2000-2009
3 //
4 // This file is part of Scorched3D.
5 //
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
29 public:
30 NetServerTCPRead(unsigned int id,
31 TCPsocket socket,
32 NetServerTCPProtocol *protocol,
33 NetMessageHandler *messageHandler,
34 bool *checkDeleted);
35 virtual ~NetServerTCPRead();
37 void start();
38 bool getDisconnect();
39 void addMessage(NetMessage *message);
40 unsigned int getIpAddress();
42 static unsigned int getIpAddressFromSocket(TCPsocket socket);
44 protected:
45 unsigned int id_;
46 bool *checkDeleted_;
47 bool disconnect_, sentDisconnect_;
48 TCPsocket socket_;
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);
61 bool pollOutgoing();
62 bool pollIncoming();
63 static int ctrlThreadFunc(void *);
64 static int sendThreadFunc(void *);
65 static int recvThreadFunc(void *);
68 #endif