/* * Socket.h * * Created on: Apr 24, 2015 * Author: rheijden */ #ifndef INCLUDE_SERVER_TCPSERVER_H_ #define INCLUDE_SERVER_TCPSERVER_H_ #include #include #include #include #include using namespace std; class TCPConnection; class TCPConnectionDirector; /** * TcpServer is the TCP server it listens for connections and creates a file descriptor per client. */ class TcpServer { public: const int kAcceptTimeoutMs = 500; const int kListenBacklog = 512; /** * constructor for tcp server * @param port port number * @param dir pointer to conection director * @throw int socket creation failed, socket reuseaddr failed, socket bind failed */ TcpServer(uint16_t port, std::shared_ptr dir); /** * deconstucor for tcp server */ ~TcpServer(); /** * sets socketaddres to be able to be reused * @param reuseToggle true is reuse false is dont reuse * @throw int socket resuseaddr failed */ void setReuseAddr(const bool reuseToggle); /** * sets socket to be blocking * @param blockingToggle true is block false is dont block */ bool setBlocking(const bool blockingToggle); /** * bind the socket * @throw int socket bind failed */ void bind(void); /** * accepting new connections */ void accept(void); private: std::shared_ptr __director; /** TCP ConnectionDirector handle */ uint16_t __port; /**< Listening port number */ int __fd; /**< Socket file descriptor */ }; #endif // INCLUDE_SERVER_TCPSERVER_H_