diff --git a/include/NetworkService.h b/include/NetworkService.h index 4a3d27a..a187b7b 100644 --- a/include/NetworkService.h +++ b/include/NetworkService.h @@ -8,7 +8,8 @@ using boost::asio::ip::tcp; class NetworkService { public: - NetworkService(uint16_t port, int threadCount); + NetworkService(boost::asio::io_context &io_context, uint16_t port, + int threadCount); ~NetworkService(); void Run(); @@ -17,7 +18,7 @@ public: private: void DoAccept(); - boost::asio::io_context io_context_; + boost::asio::io_context &io_context_; std::vector threads_; tcp::acceptor acceptor_; boost::asio::executor_work_guard diff --git a/server/NetworkService.cpp b/server/NetworkService.cpp index 2a13784..f126266 100644 --- a/server/NetworkService.cpp +++ b/server/NetworkService.cpp @@ -2,8 +2,10 @@ #include "Logger.h" #include "Session.h" -NetworkService::NetworkService(uint16_t port, int threadCount) - : acceptor_(io_context_, tcp::endpoint(tcp::v4(), port)), +NetworkService::NetworkService(boost::asio::io_context &io_context, + uint16_t port, int threadCount) + : io_context_(io_context), + acceptor_(io_context_, tcp::endpoint(tcp::v4(), port)), work_guard_(boost::asio::make_work_guard(io_context_)) { threads_.reserve(threadCount); for (int i = 0; i < threadCount; ++i) { diff --git a/server/main.cpp b/server/main.cpp index 3270f08..9abedd4 100644 --- a/server/main.cpp +++ b/server/main.cpp @@ -32,7 +32,7 @@ int main() { return 1; } - NetworkService server(port, threadCount); + NetworkService server(main_context, port, threadCount); server.Run(); boost::asio::signal_set signals(main_context, SIGINT, SIGTERM);