diff --git a/src/net/async_server.hpp b/src/net/async_server.hpp index f192884b896c2b37b98693ddefb4cf58fe2a70c2..eddbba2db52adc7c32abac7e708cd4d986a2cfc5 100644 --- a/src/net/async_server.hpp +++ b/src/net/async_server.hpp @@ -1,5 +1,7 @@ #pragma once +#include <ev++.h> + #include <functional> #include <memory> @@ -20,12 +22,18 @@ private: accept_handler_type on_accept; error_handler_type on_error; + ev::io io; + public: async_server_socket(auto_fd&& fd) : socket(std::forward(fd)) { - // Add this socket to libev ... + // This constructor got a constructed socket as an argument + // and forwards it to libev + io.set<async_server_socket, &async_server_socket::get_accept_handler()>(this); + io.start(this->socket, ev::READ); } ~async_server_socket() { // Remove this socket from libev ... + io.stop(); } public: