From c0df2ec1120cf95aeedfcc6ee0a2e7e2585aa542 Mon Sep 17 00:00:00 2001 From: sfja Date: Wed, 8 Apr 2026 11:58:21 +0200 Subject: [PATCH] move register_event to cpp file --- backend/src/event_loop.cpp | 13 +++++++++++++ backend/src/event_loop.hpp | 20 +++----------------- backend/src/main.cpp | 3 --- backend/src/server.cpp | 7 ++++--- 4 files changed, 20 insertions(+), 23 deletions(-) diff --git a/backend/src/event_loop.cpp b/backend/src/event_loop.cpp index fa1dbd3..70ecc32 100644 --- a/backend/src/event_loop.cpp +++ b/backend/src/event_loop.cpp @@ -67,6 +67,19 @@ auto Manager::start() -> Result } } +auto Manager::register_event(std::unique_ptr event, int fd) + -> Result +{ + this->events.emplace_back(std::move(event)); + auto poll_event = epoll_event { .events = EPOLLIN, + .data = { .ptr = events.back().get() } }; + + if (::epoll_ctl(this->epoll_fd, EPOLL_CTL_ADD, fd, &poll_event) < 0) { + return std::unexpected(errno_shim("could not add listener to epoll")); + } + return { }; +} + auto Manager::deregister_event(int fd) -> Result { auto poll_event = epoll_event { .events = EPOLLIN, .data = { } }; diff --git a/backend/src/event_loop.hpp b/backend/src/event_loop.hpp index 283149b..4789f40 100644 --- a/backend/src/event_loop.hpp +++ b/backend/src/event_loop.hpp @@ -33,7 +33,7 @@ namespace event { }; template - auto make_event(Data&& data) -> std::unique_ptr + static auto make_event(Data&& data) -> std::unique_ptr { return std::make_unique(std::make_unique(std::move(data))); } @@ -41,22 +41,8 @@ namespace event { class Manager { public: auto start() -> Result; - template - auto register_event(Data&& data, int fd) -> Result - { - - auto event = make_event(std::move(data)); - this->events.emplace_back(std::move(event)); - auto poll_event = epoll_event { .events = EPOLLIN, - .data = { .ptr = events.back().get() } }; - - if (::epoll_ctl(this->epoll_fd, EPOLL_CTL_ADD, fd, &poll_event) - < 0) { - return std::unexpected( - errno_shim("could not add listener to epoll")); - } - return { }; - } + auto register_event(std::unique_ptr event, int fd) + -> Result; auto deregister_event(int fd) -> Result; static auto create() -> Result; diff --git a/backend/src/main.cpp b/backend/src/main.cpp index 46265b6..39099a5 100644 --- a/backend/src/main.cpp +++ b/backend/src/main.cpp @@ -64,9 +64,6 @@ int main(void) } }); - std::this_thread::sleep_for(std::chrono::milliseconds(1000)); - mqtt_client.publish("/", "published from c++"); - auto mgr = mst::event::Manager::create().value(); auto x = mst::Server::bind(mgr, "0.0.0.0", PORT); if (!x) { diff --git a/backend/src/server.cpp b/backend/src/server.cpp index 1946109..82c8c2f 100644 --- a/backend/src/server.cpp +++ b/backend/src/server.cpp @@ -32,7 +32,8 @@ auto Server::bind( return std::unexpected(x.error()); } auto listener = x.value(); - auto res = mgr.register_event(Server(listener), listener.fd); + auto res + = mgr.register_event(event::make_event(Server(listener)), listener.fd); if (!res) { return std::unexpected(res.error()); } @@ -44,8 +45,8 @@ auto Server::wake(event::Manager& mgr) -> Result auto x = this->listener.accept(); auto connection = x.value(); - auto res - = mgr.register_event(mst::Client(*this, connection), connection.fd); + auto res = mgr.register_event( + event::make_event(mst::Client(*this, connection)), connection.fd); if (!res) { return std::unexpected(res.error());