#ifndef __APPLICATION_H__ #define __APPLICATION_H__ #include "Router/matches.hpp" #include #include #include namespace Core { class IoContext; class MessageManager; } // namespace Core namespace WeChat { namespace Corporation { class Context; } } // namespace WeChat namespace Older { class Settings; class ApplicationPrivate; class HttpSession; class Database; class SessionStore; class SignalServer; class Application : public std::enable_shared_from_this { public: using Pointer = std::shared_ptr; using Request = boost::beast::http::request; using RequestHandler = std::function; Application(); boost::asio::io_context &ioContext(); void startAcceptHttpConnections(const std::string &address, uint16_t port); void insertUrl(std::string_view url, RequestHandler &&handler); int exec(); protected: void asyncAcceptHttpConnections(); private: ApplicationPrivate *m_d = nullptr; std::shared_ptr m_settings; std::shared_ptr m_ioContext; std::shared_ptr m_messageManager; std::shared_ptr m_sessionStore; std::shared_ptr m_database; std::shared_ptr m_corporationContext; std::shared_ptr m_signalServer; }; } // namespace Older #endif // __APPLICATION_H__