Files
Magic-Scrolls/include/engine/core/engine_module_api.hpp

44 lines
1.4 KiB
C++

#ifndef __MSC_ENGINE_MODULE_API_HPP__
#define __MSC_ENGINE_MODULE_API_HPP__
#include <cstdint>
#include <engine/core/engine_bus.hpp>
#include <engine/core/engine_db_provider.hpp>
#include <memory>
#include <string>
#include <unordered_map>
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<std::string, std::uint16_t>
getLoadedModules() const = 0;
/// @brief Получить прямой доступ к модулю
virtual std::shared_ptr<MscEngineModule> &
getModule(const std::string &name) = 0;
/// @brief Создать провайдер БД с хранением в памяти
virtual std::unique_ptr<MscEngineDBProvider> createDBProvider() = 0;
/// @brief Создать провайдер БД с указанным файлом
virtual std::unique_ptr<MscEngineDBProvider>
createDBProvider(const std::string &filepath) = 0;
/// @brief Запросить остановку движка
virtual void requestStop() = 0;
};
#endif // __MSC_ENGINE_MODULE_API_HPP__