Yayin Story Studio logo Yayin Story Studio 项目文档
回到主页 用户手册

PluginManager Class

class Visindigo::General::PluginManager

此类为Visindigo提供插件管理器。. 详情...

头文件: #include <General/PluginManager.h>
自以下版本: Visindigo 0.13.0

公开成员函数

(自 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,但又需要插件管理功能, 你可以手动调用这些函数,但请确保调用顺序正确:

成员函数文档

[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.