/* $Id: serverconnectiontcp.hpp,v 1.3 2005/11/30 21:36:06 chfreund Exp $ */ #ifndef _SERVERCONNECTIONTCP_HPP_ #define _SERVERCONNECTIONTCP_HPP_ #include #include #include #include "serverconnection.hpp" #include "serverentry.hpp" struct Message; struct EchoMessage; class World; //! A server connection class using TCP communication class ServerConnectionTCP : public ServerConnection { private: //! The server entry RemoteServerEntry m_serverEntry; //! A TCP socket TCPsocket m_socket; //! A socket set SDLNet_SocketSet m_socketSet; //! The world that is managed over this connection World* m_world; //! A message queue for general messages std::deque m_messageQueue; //! A message queue for echo messages std::deque m_echoMessageQueue; public: //! Constructor ServerConnectionTCP( RemoteServerEntry& entry ); //! Destructor virtual ~ServerConnectionTCP(); //! \name Implementations of abstract functions of the base class //@{ ServerEntry::Type getType() const { return ServerEntry::REMOTE; } bool checkConnection( ServerEntry* server ); bool openConnection(); void closeConnection(); void sendMessage( Message* message ); EchoMessage* getEchoMessage( Uint32 frame ); Message* popMessage(); Message* peekMessage(); //@} //! Get the world World* getWorld() { return m_world; } private: //! Receives messages from the server and stores them in the queues bool recvMessage(); friend class ServerConnectionTCPUDP; }; #endif // _SERVERCONNECTIONTCP_HPP_