16:高级篇 - CTK 服务追踪

Posted 一去丶二三里

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了16:高级篇 - CTK 服务追踪相关的知识,希望对你有一定的参考价值。

作者: 一去、二三里
个人微信号: iwaleon
微信公众号: 高效程序员

访问服务

如果构建了一个 LogService 作为服务,并将其注册到服务注册中心。这时要在其它 Plugin 中使用 LogService 来记录日志,你可能会想到这种方式:

  • 使用 ctkPluginContext::getServiceReference() 获取服务引用
  • 通过 ctkPluginContext::getService() 获取指定 ctkServiceReference 引用的服务对象

然而,这需要编写非常复杂的代码。并且比较麻烦的是,有时想调用 LogService 服务,但它根本不可用!

也许你还会想到 ctkPluginContext::connectServiceListener(),但它是用于监听各种服务的。如果要监听某一种特定服务的话,则需要指定一个 filter,相对比较麻烦。此外,这种方式存在一个问题 - 无法监听到已经存在的 Service。

那么,到底该如何监听某一种特定的服务呢?为此,CTK 提供了一个 ctkServiceTracker 类,它对 Service 的获取要比 ServiceListener 简单许多,并且可以解决不能监听到已经存在的 Service 的问题。

Log 插件

我们需要做的第一件事,是实现 Log 插件,用于提供日志服务。

在这个插件里面,我们定义了一个 LogServi

以上是关于16:高级篇 - CTK 服务追踪的主要内容,如果未能解决你的问题,请参考以下文章

11:高级篇 - CTK 事件管理机制(插件间通信)

12:高级篇 - CTK 事件管理机制(sendEvent/postEvent)

13:高级篇 - CTK 事件管理机制(signal/slot)

CTK-使用ctk框架完成日志打印界面插件

17:高级篇 - 访问 CTK 服务的最佳方式

14:高级篇 - CTK 服务工厂 简述