modulemanager.h 985 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. #include <map>
  3. #include "sol/sol.hpp"
  4. #include "core/structs.h"
  5. typedef int (*fastweb_module_regist)(void*, void*);
  6. struct module_info {
  7. void* dll = nullptr;
  8. fastweb_module_regist func = nullptr;
  9. };
  10. /// <summary>
  11. /// 模块管理器
  12. /// </summary>
  13. class module_manager{
  14. public:
  15. module_manager();
  16. ~module_manager();
  17. void start();
  18. void close();
  19. /// <summary>
  20. /// 创建虚拟机
  21. /// </summary>
  22. /// <returns></returns>
  23. void load(sol::state* lua);
  24. private:
  25. /// <summary>
  26. /// 加载核心库
  27. /// </summary>
  28. /// <param name="lua"></param>
  29. void load_core(sol::state* lua);
  30. /// <summary>
  31. /// 加载三方库
  32. /// </summary>
  33. void load_3rdparty(sol::state* lua);
  34. /// <summary>
  35. /// 加载LUA库
  36. /// </summary>
  37. /// <param name="lua"></param>
  38. void load_lualib(sol::state* lua);
  39. /// <summary>
  40. /// 取模块文件列表
  41. /// </summary>
  42. /// <returns></returns>
  43. std::vector<std::string> modules();
  44. private:
  45. std::map<std::string, module_info> m_modules;
  46. };