1 前言
在鸿蒙L0开发时,发现里面经常会用到samgr,用于各个模块之间的通讯。
这里,最重要的就是一个组件化的概念,所有的模块,都是service,注册到samgr中,供其他模块使用。
同时,也可以调用samgr,获取其他模块的接口,并进行调用。
这里分析的是基于L0的samgr_lite,因为这个实现比较简单,它本身是单进程的系统,不需要涉及跨进行的消息交互。
但同时,这个samgr也不简单,它已超越了组件管理的概念,加入了不一样的东西。
- 服务注册与查询;
- 服务的子服务(Feature)的注册与查询;
- 服务的线程管理和消息队列;
- 消息总线机制;
2 总体框架
服务中心是一个单例模式,所有服务在开机时注册到服务中心。
开机以后,各个客户查询并使用服务。

服务中心的组成如下

服务中心里,通过vector保存了多个服务;
每一个服务对应一个线程池和消息队列;
每一个服务又对应0个或多个feature;
3 服务
3.1 服务接口
服务的接口如下:
foundation/distributedschedule/samgr_lite/interfaces/kits/samgr/service.h
const char *(*GetName)(Service

396

被折叠的 条评论
为什么被折叠?



