From 8c34576ea0d97a22760a68aec228c76ecf25ab60 Mon Sep 17 00:00:00 2001 From: Florent Le Coz Date: Thu, 3 Jul 2014 02:58:27 +0200 Subject: Move some members of TCPSocketHandler into the SocketHandler class --- src/network/socket_handler.hpp | 30 +++++++++++++++++++++++++----- src/network/tcp_socket_handler.cpp | 8 +------- src/network/tcp_socket_handler.hpp | 21 +-------------------- 3 files changed, 27 insertions(+), 32 deletions(-) (limited to 'src') diff --git a/src/network/socket_handler.hpp b/src/network/socket_handler.hpp index b3a08d3..9a894a4 100644 --- a/src/network/socket_handler.hpp +++ b/src/network/socket_handler.hpp @@ -1,18 +1,38 @@ -#ifndef SOCKET_HANDLER_INTERFACE_HPP -# define SOCKET_HANDLER_INTERFACE_HPP +#ifndef SOCKET_HANDLER_HPP +# define SOCKET_HANDLER_HPP + +#include + +class Poller; typedef int socket_t; class SocketHandler { public: - SocketHandler() {} + explicit SocketHandler(std::shared_ptr poller, const socket_t socket): + poller(poller), + socket(socket) + {} virtual ~SocketHandler() {} - virtual socket_t get_socket() const = 0; virtual void on_recv() = 0; virtual void on_send() = 0; virtual void connect() = 0; virtual bool is_connected() const = 0; + socket_t get_socket() const + { return this->socket; } + +protected: + /** + * A pointer to the poller that manages us, because we need to communicate + * with it. + */ + std::shared_ptr poller; + /** + * The handled socket. + */ + socket_t socket; + private: SocketHandler(const SocketHandler&) = delete; SocketHandler(SocketHandler&&) = delete; @@ -20,4 +40,4 @@ private: SocketHandler& operator=(SocketHandler&&) = delete; }; -#endif // SOCKET_HANDLER_INTERFACE_HPP +#endif // SOCKET_HANDLER_HPP diff --git a/src/network/tcp_socket_handler.cpp b/src/network/tcp_socket_handler.cpp index f6b37de..d9432a6 100644 --- a/src/network/tcp_socket_handler.cpp +++ b/src/network/tcp_socket_handler.cpp @@ -38,8 +38,7 @@ using namespace std::chrono_literals; namespace ph = std::placeholders; TCPSocketHandler::TCPSocketHandler(std::shared_ptr poller): - socket(-1), - poller(poller), + SocketHandler(poller, -1), use_tls(false), connected(false), connecting(false) @@ -292,11 +291,6 @@ void TCPSocketHandler::close() this->port.clear(); } -socket_t TCPSocketHandler::get_socket() const -{ - return this->socket; -} - void TCPSocketHandler::send_data(std::string&& data) { #ifdef BOTAN_FOUND diff --git a/src/network/tcp_socket_handler.hpp b/src/network/tcp_socket_handler.hpp index 8ed3b67..8416690 100644 --- a/src/network/tcp_socket_handler.hpp +++ b/src/network/tcp_socket_handler.hpp @@ -34,15 +34,13 @@ public: }; #endif // BOTAN_FOUND -class Poller; - /** * An interface, with a series of callbacks that should be implemented in * subclasses that deal with a socket. These callbacks are called on various events * (read/write/timeout, etc) when they are notified to a poller * (select/poll/epoll etc) */ -class TCPSocketHandler: SocketHandler +class TCPSocketHandler: public SocketHandler { protected: ~TCPSocketHandler() {} @@ -77,10 +75,6 @@ public: * Watch the socket for send events, if our out buffer is not empty. */ void send_pending_data(); - /** - * Returns the socket that should be handled by the poller. - */ - socket_t get_socket() const; /** * Close the connection, remove us from the poller */ @@ -185,10 +179,6 @@ private: */ void on_tls_activated(); #endif // BOTAN_FOUND - /** - * The handled socket. - */ - socket_t socket; /** * Where data is added, when we want to send something to the client. */ @@ -203,15 +193,6 @@ private: socklen_t ai_addrlen; protected: - /** - * A pointer to the poller that manages us, because we need to communicate - * with it, sometimes (for example to tell it that he now needs to watch - * write events for us). Do not ever try to delete it. - * - * And a raw pointer because we are not owning it, it is owning us - * (actually it is sharing our ownership with a Bridge). - */ - std::shared_ptr poller; /** * Where data read from the socket is added until we can extract a full * and meaningful “message” from it. -- cgit v1.2.3