服务管理器
公共头文件:
#include "brookesia/service_manager.hpp"
概述
brookesia_service_manager 是 ESP-Brookesia 的服务管理框架核心组件,统一提供服务生命周期管理、函数注册与事件分发、本地调用和事件订阅等能力。
特性
生命周期管理:集中式管理服务初始化、启动、停止与反初始化流程。
本地调用:在进程内直接调用服务函数,不依赖网络传输。
统一函数与事件模型:提供函数定义、注册、分发与事件订阅机制。
线程安全调度:可通过本地运行器与任务调度机制实现并发安全执行。
解耦集成:应用代码通过统一 API 调用服务,不依赖具体服务实现细节。
通信架构
应用通过 ServiceManager 绑定服务后,直接通过 ServiceBase 和服务 helper 访问函数与事件注册表,调用链路短、性能高,并且不需要网络通信。
flowchart TD
A["App / 用户代码"]
B["**ServiceManager**<br/>· 服务发现<br/>· 生命周期协调<br/>· 绑定入口"]
C["**ServiceBinding**<br/>· 持有服务引用<br/>· 提供访问封装<br/>· 管理调用上下文"]
D["**ServiceBase**<br/>· 服务实例基类<br/>· 函数与事件容器<br/>· 权限检查入口"]
E["**函数注册表**<br/>· 命名函数<br/>· 参数 schema<br/>· 同步/异步执行"]
F["**事件注册表**<br/>· 事件名称<br/>· 订阅者列表<br/>· 通知派发"]
A -->|"bind()"| B
B -->|"返回 binding"| C
C -->|"get_service()"| D
D -->|"注册函数"| E
D -->|"注册事件"| F
模块介绍
服务运行层
服务运行层负责服务生命周期管理、调用与事件执行调度和依赖绑定,核心由 ServiceBase、ServiceManager 和 LocalTestRunner 构成。
函数系统
函数系统用于定义服务可调用接口、校验调用参数并分派到具体处理函数,核心包含函数定义模型和函数注册表。
事件系统
事件系统用于描述事件结构、校验事件数据并将事件分发到本地订阅者。
通用
通用模块定义服务管理器中复用的通用类型和宏,为其他模块提供公共基础能力。