/* $Id: clientconnectiontcp.hpp,v 1.4 2005/12/04 22:44:49 chfreund Exp $ */ #ifndef _CLIENTCONNECTIONTCP_HPP_ #define _CLIENTCONNECTIONTCP_HPP_ #include #include #include #include "clientconnection.hpp" struct Message; struct EventMessage; struct EchoMessage; class World; //! A client connection using TCP class ClientConnectionTCP : public ClientConnection { private: //! A TCP socket TCPsocket m_socket; //! A socket set SDLNet_SocketSet m_socketSet; // std::deque m_eventMessageQueue; //! The last event message received from the client EventMessage* m_eventMessage; //! Message queue for received messages std::deque m_messageQueue; public: //! Constructor //! \param socket The already connected TCP socket ClientConnectionTCP( TCPsocket socket ); //! Destructor virtual ~ClientConnectionTCP(); //! \name Implementations of the abstract functions of the base class //@{ void openConnection( Uint8 clientID ); void closeConnection(); bool isConnected() { return m_socket != 0; } EventMessage* getEventMessage(); Message* getMessage(); void sendMessage( Message* message ); void sendEchoMessage( Message* message ); //@} private: //! Receive messages from the socket //! \return true, if messages were received, false else bool recvMessage(); friend class ClientConnectionTCPUDP; }; #endif // _CLIENTCONNECTIONTCP_HPP_