/* $Id: clientconnectiondirect.hpp,v 1.4 2005/12/04 22:44:49 chfreund Exp $ */ #ifndef _CLIENTCONNECTIONDIRECT_HPP_ #define _CLIENTCONNECTIONDIRECT_HPP_ #include #include #include "clientconnection.hpp" #include "servercommunicator.hpp" class ServerConnectionDirect; struct Message; struct EchoMessage; struct EventMessage; class World; //! A client connection using direct access class ClientConnectionDirect : public ClientConnection { private: //! Queue for event messages std::deque m_eventMessageQueue; //! Queue for other messages std::deque m_messageQueue; //! Pointer to the server communicator ServerCommunicator* m_communicator; //! Pointer to the connection object for the client ServerConnectionDirect* m_directConnection; //! A mutex SDL_mutex* m_mutex; public: //! Constructor ClientConnectionDirect( ServerCommunicator* communicator, ServerConnectionDirect* connection ) : m_communicator( communicator ), m_directConnection( connection ) { m_mutex = SDL_CreateMutex(); } //! Destructor virtual ~ClientConnectionDirect(); //! \name Implementation of the abstract functions of the base class //@{ void openConnection( Uint8 clientID ) { } void closeConnection() { } bool isConnected() { return true; } EventMessage* getEventMessage(); Message* getMessage(); void sendMessage( Message* message ); void sendEchoMessage( Message* echoMessage ); void recvMessage( Message* message ); //@} //! Open the connection Uint8 openConnection(); //! Get the world (called in the client communicator) World* getWorld() { return m_communicator->getWorld(); } }; #endif // _CLIENTCONNECTIONDIRECT_HPP_