summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/network/socket_handler.hpp30
-rw-r--r--src/network/tcp_socket_handler.cpp8
-rw-r--r--src/network/tcp_socket_handler.hpp21
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.
*