共享免费生活代码

因为物联网重点突出了传感器感知的概念,同时它也具备网络线路传输,信息存储和处理,行业应用接口等功能。而且也往往与互联网共用服务器,网络线路和应用接口,使人与人(Human to Human,H2H),人与物(Human to thing,H2T)、物与物(Thing to Thing,T2T)之间的交流变成可能,最终将使人类社会、信息空间和物理世界(人―机―物)融为一体。

 

 

 

关于 CTK 插件框架的使用,主要分为以下几步:

· 初始化并启动插件框架:由 ctkPluginFramework::init() 和 ctkPluginFramework::start() 完成

· 获取上下文:由 ctkPluginFramework::getPluginContext() 完成

· 安装插件:由 ctkPluginContext::installPlugin() 完成,与此同时,会返回一个 ctkPlugin 对象。

· 启动插件:由 ctkPlugin::start() 完成

· 获取服务引用:由 ctkPluginContext::getServiceReference() 完成

· 获取指定 ctkServiceReference 引用的服务对象:由 ctkPluginContext::getService() 完成

· 调用服务

     使用 CTK 插件框架

    创建一个 Qt 控制台应用程序,.pro 内容如下:

QT += core

QT -= gui

 

TARGET = LoadCTKPlugin

CONFIG += console

TEMPLATE = app

 

LIBS += -L$$PWD/Libs -lCTKCore -lCTKPluginFramework

 

INCLUDEPATH += \

    $$PWD/../../CTK-master/Libs/Core \

    $$PWD/../../CTK-master/Libs/PluginFramework

 

SOURCES += main.cpp

 由于 CTKPluginFramework 依赖于 CTKCore 模块,所以也需要将其添加进来。

共享免费生活小程序开发,共享免费生活系统开发 134.java.2220.php.2839.

 按照上述流程,main.cpp 写起来会就容易很多:

#include <QCoreApplication>#include <QtDebug>

#include <ctkPluginFrameworkFactory.h>#include <ctkPluginFramework.h>#include <ctkPluginException.h>#include <ctkPluginContext.h>

#include "Testing/FrameworkTestPlugins/auth_plugin/auth_plugin_service.h"

const QString c_strPluginPath = "E:/CTK-Examples/LoadCTKPlugin/plugins/libauth_plugin.dll";

int main(int argc, char *argv[])

{

    QCoreApplication app(argc, argv);

 

    ctkPluginFrameworkFactory frameWorkFactory;

    QSharedPointer<ctkPluginFramework> framework = frameWorkFactory.getFramework();

    try {

        // 初始化并启动插件框架

        framework->init();

        framework->start();

        qDebug() << "CTK Plugin Framework start ...";

    } catch (const ctkPluginException &e) {

        qDebug() << "Failed to initialize the plugin framework: " << e.what();

        return -1;

    }

 

    // 获取插件上下文

    ctkPluginContext* pluginContext = framework->getPluginContext();

    try {

        // 安装插件

        QSharedPointer<ctkPlugin> plugin = pluginContext->installPlugin(QUrl::fromLocalFile(c_strPluginPath));

        // 启动插件

        plugin->start(ctkPlugin::START_TRANSIENT);

        qDebug() << "Plugin start ...";

    } catch (const ctkPluginException &e) {

        qDebug() << "Failed to install plugin" << e.what();

        return -1;

    }

 

    // 获取服务引用

    ctkServiceReference reference = pluginContext->getServiceReference<AuthPluginService>();

    // 获取指定 ctkServiceReference 引用的服务对象

    AuthPluginService* authService = qobject_cast<AuthPluginService *>(pluginContext->getService(reference));

    if (authService != Q_NULLPTR) {

        // 调用服务,进行认证

        bool isLogin = authService->login("root", "123456");

        if (isLogin) {

            qDebug() << "Login successfully";

        } else {

            qDebug() << "Login failed";

        }

    }

 

    return app.exec();

}

ctkPluginContext 是框架内一个插件的执行上下文,该上下文用于授予对其他方法的访问权,以便插件可以与框架进行交互。

ctkPluginContext 提供的方法允许插件:

· 订阅由框架发布的事件

· 使用 Framework service registry 注册服务对象

·  Framework service registry 检索 ServiceReferences

· 为引用的服务获取和发布服务对象

· 在框架中安装新的插件

· 获取框架中安装的插件列表

· 获得一个插件的 ctkPlugin 对象

· 为(由框架为插件提供的)持久存储区域中为文件创建 QFile 对象

      由此可见,ctkPluginContext 在 CTK 插件框架中占据着至关重要的位置。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值