#pragma once #include #include #include #include #include namespace asio = boost::asio; class NetworkService : public std::enable_shared_from_this { public: NetworkService(asio::io_context &, asio::ip::tcp::endpoint, int); void start(); private: asio::io_context &ctx_; asio::ip::tcp::endpoint endpoint_; std::vector threads_; asio::executor_work_guard work_guard_; asio::awaitable listen(); asio::awaitable session(asio::ip::tcp::socket); };