summaryrefslogtreecommitdiff
path: root/louloulibs/network/socket_handler.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'louloulibs/network/socket_handler.hpp')
m---------louloulibs0
-rw-r--r--louloulibs/network/socket_handler.hpp45
2 files changed, 45 insertions, 0 deletions
diff --git a/louloulibs b/louloulibs
deleted file mode 160000
-Subproject 0f3c1183e2bf0941ae2bffd3f31577bce4f3001
diff --git a/louloulibs/network/socket_handler.hpp b/louloulibs/network/socket_handler.hpp
new file mode 100644
index 0000000..d01ac5d
--- /dev/null
+++ b/louloulibs/network/socket_handler.hpp
@@ -0,0 +1,45 @@
+#ifndef SOCKET_HANDLER_HPP
+# define SOCKET_HANDLER_HPP
+
+#include <louloulibs.h>
+#include <memory>
+
+class Poller;
+
+typedef int socket_t;
+
+class SocketHandler
+{
+public:
+ explicit SocketHandler(std::shared_ptr<Poller> poller, const socket_t socket):
+ poller(poller),
+ socket(socket)
+ {}
+ virtual ~SocketHandler() {}
+ 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;
+ SocketHandler& operator=(const SocketHandler&) = delete;
+ SocketHandler& operator=(SocketHandler&&) = delete;
+};
+
+#endif // SOCKET_HANDLER_HPP