NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
plugin_manager.hpp
浏览该文件的文档.
1#ifndef NEFORCE_PLUGIN_PLUGIN_MANAGER_HPP__
2#define NEFORCE_PLUGIN_PLUGIN_MANAGER_HPP__
3
11
16NEFORCE_BEGIN_NAMESPACE__
17
23
31class NEFORCE_API plugin_manager {
32public:
34
35private:
36 mutable mutex mutex_{};
38 unordered_map<string, library_ptr> libraries_{};
39 unordered_map<string, string> plugin_to_library_{};
40
44 plugin_manager() = default;
45
46public:
47 plugin_manager(const plugin_manager&) = delete;
48 plugin_manager& operator=(const plugin_manager&) = delete;
49 plugin_manager(plugin_manager&&) = delete;
50 plugin_manager& operator=(plugin_manager&&) = delete;
51
56
61 static plugin_manager& instance() {
62 static plugin_manager manager;
63 return manager;
64 }
65
75 size_t load_plugins(const string& pth);
76
86
94 bool unload_plugin(const string& name);
95
101 NEFORCE_NODISCARD iplugin* get_plugin(const string& name);
102
107 NEFORCE_NODISCARD vector<string> list_plugins() const;
108
115
122 void shutdown_all() noexcept;
123};
124 // Plugin
126
127NEFORCE_END_NAMESPACE__
128#endif // NEFORCE_PLUGIN_PLUGIN_MANAGER_HPP__
非递归互斥锁
size_t load_plugins(const string &pth)
从目录加载所有插件
unique_ptr< dynamic_library > library_ptr
动态库指针类型
void shutdown_all() noexcept
关闭所有插件
void initialize_all()
初始化所有插件
NEFORCE_NODISCARD vector< string > list_plugins() const
获取所有已加载插件名称
~plugin_manager()
析构函数,关闭所有插件
void load_plugin(string_view pth)
加载单个插件
static plugin_manager & instance()
获取单例实例
NEFORCE_NODISCARD iplugin * get_plugin(const string &name)
获取插件实例
bool unload_plugin(const string &name)
卸载插件
独占智能指针
无序映射容器
动态大小数组容器
动态库加载器
basic_string_view< char > string_view
字符字符串视图
NEFORCE_ALWAYS_INLINE_INLINE bool name(char *buffer, size_t size)
获取当前线程名称
互斥锁
插件入口点定义
插件接口基类
无序映射容器