ContainerManagerInterface 类
为自定义容器解决方案提供的插件接口。更多信息...
头文件 | #include <ContainerManagerInterface> |
公共函数
virtual ContainerInterface * | create(bool isQuickLaunch, const QVector<int> &stdioRedirections, const QMap<QString, QString> &debugWrapperEnvironment, const QStringList &debugWrapperCommand) = 0 |
virtual QString | identifier() const = 0 |
virtual bool | initialize(ContainerHelperFunctions *helpers) |
virtual void | setConfiguration(const QVariantMap &configuration) = 0 |
virtual bool | supportsQuickLaunch() const = 0 |
详细描述
这是您必须实现,如果您想要将您自己的自定义容器解决方案集成到应用程序管理器中。
例如,请参阅 examples/software-container
。此示例显示了 Pelagicore 的 SoftwareContainers 的集成(它们本质上是易于使用的 LXC 包装器)。
成员函数文档
[纯虚]
ContainerInterface *ContainerManagerInterface::create(bool isQuickLaunch, const QVector<int> &stdioRedirections, const QMap<QString, QString> &debugWrapperEnvironment, const QStringList &debugWrapperCommand)
每当应用程序管理器需要为直接应用程序启动或运行时快速启动器(取决于 isQuickLaunch 参数的值)创建一个特定容器时,它都会调用此函数。
如果 stdioRedirections 向量非空,则插件应(如果可能)重定向标准 IO 流:该向量可最多有 3 个条目,索引对应于 Unix 标准 IO 文件号(0: stdin
,1: stdout
和 2: stderr
)。该向量中的值是打开的 OS 文件描述符(用于重定向)或 -1
。《code translate="no">[-1, 5, 5] 的意思是:忽略 stdin
,并将两者重定向到 fd 5
。
如果成功实例化了一个新的ContainerInterface,那么这些文件描述符的所有权才会被转移(即返回值不是nullptr)。然后它们必须立即关闭或最迟在启动的应用程序完成后关闭。
debugWrapperEnvironment是一个可选的字符串映射,用于环境变量及其值,如果需要使用调试包装器(debugWrapperCommand不为空-见下文)。此映射中的空值表示,应当取消设置其键指定的环境变量。
如果debugWrapperCommand不为空,插件会要求使用这个调试包装器执行ContainterInterface::setProgram设置的二进制文件。插件负责将这些命令组合起来,并处理替换%program%
和%arguments%
。有关更多信息,请参阅调试包装器文档。
[纯虚函数]
QString ContainerManagerInterface::identifier() const
应返回此容器插件的唯一标识符字符串。
[虚函数]
bool ContainerManagerInterface::initialize(ContainerHelperFunctions *helpers)
该函数在应用程序管理器加载插件后、实例化接口并配置了setConfiguration后被调用。
helpers接口提供了访问在不同容器插件实现之间可以共享的公共功能的方法。此指针由应用程序管理器拥有,并在接口的生命周期内有效。
如果您的插件在给定的配置和系统状态下可用,则返回true
。如果不适用,则返回false
,应用程序管理器将禁用此容器插件。
[纯虚函数]
void ContainerManagerInterface::setConfiguration(const QVariantMap &configuration)
在解析配置文件后,由应用程序管理器调用。该configuration映射对应于容器文档中描述的(可选)容器特定配置。
[纯虚函数]
bool ContainerManagerInterface::supportsQuickLaunch() const
如果接口支持快速启动,则期望返回true
;否则返回false
。
© 2024 The Qt Company Ltd。在此包括的文档贡献是各自所有者的版权。本文档符合自由软件基金会公布并由其出版的GNU自由文档许可证版本1.3的条款。Qt及其相关标志是The Qt Company Ltd.在芬兰和/或其他国家/地区的商标。所有其他商标均为其各自所有者的财产。