16:高级篇 - CTK 服务追踪

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

访问服务

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

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

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

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

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

Log 插件

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

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

猜你喜欢

转载自blog.csdn.net/u011012932/article/details/78849626