#ifndef LISTENER_H #define LISTENER_H #include #include #include #include class SharedState; // Accepts incoming connections and launches the sessions class Listener : public std::enable_shared_from_this { public: Listener(boost::asio::io_context &ioc, boost::asio::ip::tcp::endpoint endpoint, std::shared_ptr const &state); // Start accepting incoming connections void startAccept(); inline std::shared_ptr state() const { return m_state; } protected: void fail(boost::beast::error_code ec, char const *what); void onAccept(boost::beast::error_code ec, std::shared_ptr socket); private: boost::asio::io_context &m_ioContext; boost::asio::ip::tcp::acceptor m_acceptor; std::shared_ptr m_state; }; #endif // LISTENER_H