/* net/tcpserver.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_TCPSERVER_H__ #define __INCLUDED_NET_TCPSERVER_H__ namespace net { #include /// A TCP server, listening on a port class TCPServer { public: /// Create a new TCP server, listening on a port TCPServer(std::string const host, unsigned int const port); /// Delete the TCP server. If the file descriptor is still open, it will be closed virtual ~TCPServer(); /// Returns true if the TCP server has a valid file descriptor bool valid() const; /// Returns true if the TCP server has an invalid file descriptor bool invalid() const; /// Returns the error state of the TCP server bool error() const; protected: /// accept an incoming connection void accept(); /// Set the error state void abort(); /// Returns the file descriptor the TCP server is listening on int fd() const; /// Called by accept() whenever a new client connects virtual void client_connect(int const clientfd, std::string const host, int const port) = 0; private: bool tcpserver_error; int tcpserver_fd; }; } #endif // __INCLUDED_NET_TCPSERVER_H__