#pragma once #include #include "config.h" #include "plugin.h" using namespace std::string_literals; static const std::string VersionString{ "Webserver "s + std::string{VERSION} }; class Server { protected: Config& m_config; boost::asio::io_context& m_ioc; const Socket& m_socket; plugins_container_type& m_plugins; public: Server(Config& config, boost::asio::io_context& ioc, const Socket& socket, plugins_container_type& m_plugins); virtual ~Server(); virtual int start() = 0; // Getters Config& GetConfig(); const Socket& GetSocket(); plugin_type GetPlugin(const std::string& name); }; int run_server(Config& config, plugins_container_type& plugins);