/* net/tcpclient.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_NET_TCPCLIENT_H__ #define __INCLUDED_NET_TCPCLIENT_H__ #include namespace net { /// A TCP client, connected to a file descriptor class TCPClient { public: /// A new TCP client, connected to a file descriptor TCPClient(int tcpclientfd); /// Delete the TCP client /// If the file descriptor is still open, it will be closed. virtual ~TCPClient(); /// Returns the error state bool error() const; /// Returns true if the TCP client has a valid file descriptor bool valid() const; /// Returns true if the TCP client has an invalid file descriptor bool invalid() const; /// Returns the file descriptor the TCP client is connected to int fd() const; /// Sets the error state void abort(); /// Sends outgoing data virtual void send(std::string const &msg); /// receives incoming data virtual void receive(std::string &msg); protected: /// Called by receive() when the client has disconnected /// @see receive virtual void client_disconnect(); private: int tcpclient_fd; bool tcpclient_error; }; } #endif //__INCLUDED_CORE_TCPCLIENT_H__