diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/network/socket_handler.hpp | 30 | ||||
-rw-r--r-- | src/network/tcp_socket_handler.cpp | 8 | ||||
-rw-r--r-- | src/network/tcp_socket_handler.hpp | 21 |
3 files changed, 27 insertions, 32 deletions
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 <memory> + +class Poller; typedef int socket_t; class SocketHandler { public: - SocketHandler() {} + explicit SocketHandler(std::shared_ptr<Poller> 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> 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> 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() {} @@ -78,10 +76,6 @@ public: */ 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 */ void close(); @@ -186,10 +180,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. */ std::list<std::string> out_buf; @@ -204,15 +194,6 @@ private: 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> poller; - /** * Where data read from the socket is added until we can extract a full * and meaningful “message” from it. * |