#ifndef __MSC_ENGINE_MODULE_API_HPP__ #define __MSC_ENGINE_MODULE_API_HPP__ #include #include #include #include #include #include class MscEngineModule; /// @brief Публичный API движка для модулей class IMscEngineModuleAPI { public: using clock = std::chrono::steady_clock; virtual ~IMscEngineModuleAPI() = default; /// @brief Получить доступ к событийной шине virtual MscEventBus &getBus() = 0; /// @brief Получить список загруженных модулей virtual std::unordered_map getLoadedModules() const = 0; /// @brief Получить прямой доступ к модулю virtual std::shared_ptr & getModule(const std::string &name) = 0; /// @brief Создать провайдер БД с хранением в памяти virtual std::unique_ptr createDBProvider() = 0; /// @brief Создать провайдер БД с указанным файлом virtual std::unique_ptr createDBProvider(const std::string &filepath) = 0; /// @brief Запросить остановку движка virtual void requestStop() = 0; }; #endif // __MSC_ENGINE_MODULE_API_HPP__