PluginManager Class
class Visindigo::General::PluginManager此类为Visindigo提供插件管理器。. 详情...
| 头文件: | #include <General/PluginManager.h> |
| 自以下版本: | Visindigo 0.13.0 |
- 所有成员列表(包含继承成员)
- PluginManager 是该集合的一部分:VPlugin插件系统子模块.
公开成员函数
(自 Visindigo 0.13.0 引入) | ~PluginManager() |
(自 Visindigo 0.13.0 引入) void | applicationInitAllPlugin() |
(自 Visindigo 0.13.0 引入) void | disableAllPlugin() |
(自 Visindigo 0.13.0 引入) void | enableAllPlugin() |
(自 Visindigo 0.13.0 引入) qint32 | getEnabledPluginCount() const |
(自 Visindigo 0.13.0 引入) qint32 | getLoadedPluginCount() const |
(自 Visindigo 0.13.0 引入) bool | isPluginEnable(Visindigo::General::Plugin *plugin) const |
(自 Visindigo 0.13.0 引入) bool | isPluginEnable(const QString &id) const |
(自 Visindigo 0.13.0 引入) void | loadAllPlugin() |
(自 Visindigo 0.13.0 引入) void | testAllPlugin() |
信号
(自 Visindigo 0.13.0 引入) void | pluginEnabled(Visindigo::General::Plugin *plugin) |
(自 Visindigo 0.13.0 引入) void | pluginLoaded(Visindigo::General::Plugin *plugin) |
静态公开成员
(自 Visindigo 0.13.0 引入) Visindigo::General::PluginManager * | getInstance() |
相关的非成员内容
(自 Visindigo 0.13.0 引入) | PackageManager |
宏
(自 Visindigo 0.13.0 引入) | VPluginManager |
详细说明
PluginManager负责加载和管理插件。
此类中有几个函数是由Visindigo::General::VIApplication在恰当时机自动调用的, 一般不需要手动调用这些函数,除非你非常清楚你在做什么。
如果你不想使用Visindigo::General::VIApplication,但又需要插件管理功能, 你可以手动调用这些函数,但请确保调用顺序正确:
- 1. loadAllPlugin()
- 2. enableAllPlugin()
- 3. applicationInitAllPlugin()
- 4. testAllPlugin()
- 5. disableAllPlugin()
成员函数文档
[noexcept, since Visindigo 0.13.0] PluginManager::~PluginManager()
析构PluginManager对象,卸载所有插件。一般来说,没有任何情况需要手动析构此对象。PluginManager应该与使用它的应用程序有一致的生命周期。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void PluginManager::applicationInitAllPlugin()
在所有插件都被启用后,调用所有插件的Visindigo::General::Plugin::onApplicationInit()函数,进行应用程序初始化工作。
Warning: 一般不手动调用此函数,其调用由Visindigo::General::VIApplication在恰当时机自动完成。 如果需要手动调用,请安排在enableAllPlugin()之后调用此函数。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void PluginManager::disableAllPlugin()
禁用所有已启用的插件。请在调用enableAllPlugin()之后调用此函数。
Warning: 一般不手动调用此函数,其调用由Visindigo::General::VIApplication在恰当时机自动完成。 如果在没有启用插件的情况下调用此函数,则不会有任何效果。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void PluginManager::enableAllPlugin()
启用所有已加载但未启用的插件。
Warning: 一般不手动调用此函数,其调用由Visindigo::General::VIApplication在恰当时机自动完成。 如果需要手动调用,请安排在loadAllPlugin()之后调用此函数。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] qint32 PluginManager::getEnabledPluginCount() const
返回已启用的插件数量。这是被启用并可以使用的插件对象的数量。
这个 function 从 Visindigo 0.13.0 开始支持。
另请参阅 getLoadedPluginCount().
[static, since Visindigo 0.13.0] Visindigo::General::PluginManager *PluginManager::getInstance()
返回PluginManager单例对象指针。单例不存在时自动创建,是获得PluginManager对象的唯一途径。
这个 function 从 Visindigo 0.13.0 开始支持。
另请参阅 VPluginManager.
[since Visindigo 0.13.0] qint32 PluginManager::getLoadedPluginCount() const
返回已加载的插件数量。这是被正确识别且加载到内存的插件动态链接库的数量。
根据插件加载的成功情况,插件在内存中的关系遵循如下规律:
- 1. 如果插件的metajson未被正确识别,则根本不会触发对动态链接库的加载尝试。
- 2. 如果在加载插件的动态链接库时,插件主函数返回的插件实例为nullptr, 或ID与metajson不符,则立即析构该插件实例(如果可以),并立即卸载该动态链接库。
- 3. 在启用插件时,如果发生异常,则立即调用该插件的禁用函数,并保持该插件处于未启用状态,但插件仍然保留在内存中。
这个 function 从 Visindigo 0.13.0 开始支持。
另请参阅 getEnabledPluginCount().
[since Visindigo 0.13.0] bool PluginManager::isPluginEnable(Visindigo::General::Plugin *plugin) const
检查plugin插件是否被启用。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] bool PluginManager::isPluginEnable(const QString &id) const
检查ID为id的插件是否被启用。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void PluginManager::loadAllPlugin()
扫描并加载插件到内存里,但不启用它们。
此函数会扫描Visindigo::General::VIApplication::EnvKey::PluginFolderPath 指定的目录下的所有插件,并根据插件的依赖关系决定加载顺序。
Warning: 一般不手动调用此函数,其调用由Visindigo::General::VIApplication在恰当时机自动完成。
Note: 这个函数不能被多次调用,重复调用会被忽略。
这个 function 从 Visindigo 0.13.0 开始支持。
[signal, since Visindigo 0.13.0] void PluginManager::pluginEnabled(Visindigo::General::Plugin *plugin)
plugin 已启用的插件对象指针。
当插件被成功启用时发出此信号。
这个 function 从 Visindigo 0.13.0 开始支持。
[signal, since Visindigo 0.13.0] void PluginManager::pluginLoaded(Visindigo::General::Plugin *plugin)
plugin 已加载的插件对象指针。
当插件被成功加载时发出此信号。
这个 function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void PluginManager::testAllPlugin()
测试所有已加载的插件。这调用所有插件的Visindigo::General::Plugin::onTest()函数。
如果插件未启用测试,则跳过该插件的测试。
Warning: 一般不手动调用此函数,其调用由Visindigo::General::VIApplication在恰当时机自动完成。 如果需要手动调用,请安排在applicationInitAllPlugin()之后调用此函数。
这个 function 从 Visindigo 0.13.0 开始支持。
相关的非成员内容
[alias, since Visindigo 0.13.0] PackageManager
作为Visindigo::General::PluginManager类的别名,方便用户将其称为“应用程序包管理器”。
这个 typedef 从 Visindigo 0.13.0 开始支持。
宏文档
[since Visindigo 0.13.0] VPluginManager
等同于 Visindigo::General::PluginManager::getInstance(),用于快速访问插件管理器单例对象。
This macro was introduced in Visindigo 0.13.0.