#ifndef __MSC_ENGINE_MODULE_API_HPP__ #define __MSC_ENGINE_MODULE_API_HPP__ #include #include #include #include #include #include class MscEngineModule; class IMscEngineModuleAPI { public: using clock = std::chrono::steady_clock; virtual ~IMscEngineModuleAPI() = default; /// @brief Get access to engine event bus virtual MscEventBus &getBus() = 0; /// @brief Get access to loaded module list virtual std::unordered_map getLoadedModules() const = 0; /// @brief Access module by its name virtual MscEngineModule &getModule(const std::string &name) = 0; /// @brief Create database provider with in-memory database virtual std::unique_ptr createDBProvider() = 0; /// @brief Create database provider with file database virtual std::unique_ptr createDBProvider(const std::string &filepath) = 0; }; #endif // __MSC_ENGINE_MODULE_API_HPP__