/*! \file connection.h This is the generic Connection class definition. \author Jon A. Lambert \date 02/15/2003 \version 0.10 */ #ifndef CONNECTION_H #define CONNECTION_H /*! The Connection class contains the minimum amount of attributes to reasonably maintain a socket connection with a client. \todo - Perhaps the bottomless buffer isn't such a grand idea. After all it's not minimal and perhaps too naive. */ //##ModelId=3ED44BF1019E class Connection { public: //##ModelId=3ED44BF10253 Connection(SOCKET sock); //##ModelId=3ED44BF10255 virtual ~Connection(); //##ModelId=3ED44BF1025E Connection(const Connection& r_conn); //##ModelId=3ED44BF10260 virtual void HandleInput(); //##ModelId=3ED44BF10268 virtual void HandleOutput(); //##ModelId=3ED44BF1026A virtual bool CanBeDisconnected(); //##ModelId=3ED44BF10272 virtual void Disconnect(); //##ModelId=3ED44BF10274 virtual void SendMsg(const string& r_msg); //##ModelId=3ED44BF1027D virtual string* ReadMsg(); //##ModelId=3ED44BF10286 virtual SOCKET GetSocket(); protected: //##ModelId=3ED44BF10288 Connection& operator= (const Connection& r_conn); //##ModelId=3ED44BF101C6 SOCKET mSock; //!< network socket //##ModelId=3ED44BF10216 bool mDisconnectable; //!< flag indicating connection wishes to be disconnected //##ModelId=3ED44BF10220 list<string> mInBuffer; //!< buffered lines waiting to be processed //##ModelId=3ED44BF1022A list<string> mOutBuffer; //!< buffered lines waiting to be output //##ModelId=3ED44BF1023F char * mpPendingOutput; //!< pending output on socket //##ModelId=3ED44BF10249 char * mpPendingInput; //!< pending or not fully formed input on socket }; #endif // CONNECTION_H