dmslite.c 源码文件阅读
初始化服务结构体
// 初始化分布式服务结构体
static DistributedService g_distributedService = {
.GetName = GetName,
.Initialize = Initialize,
.MessageHandle = MessageHandle,
.GetTaskConfig = GetTaskConfig
};
基本模块
基本模块分为五部分:
GetName(Service *service):获取服务名称
/**
* 函数功能:获取服务名称
* 参数:
* service:服务名称
* 返回值:服务名
* */
static const char *GetName(Service *service)
{
if (service == NULL) {
return EMPTY_SERVICE_NAME;
}
return DISTRIBUTED_SCHEDULE_SERVICE;
}
DD一下:欢迎大家关注公众号<程序猿百晓生>,可以了解到一下知识点。
1.OpenHarmony开发基础
2.OpenHarmony北向开发环境搭建
3.鸿蒙南向开发环境的搭建
4.鸿蒙生态应用开发白皮书V2.0 & V3.0
5.鸿蒙开发面试真题(含参考答案)
6.TypeScript入门学习手册
7.OpenHarmony 经典面试题(含参考答案)
8.OpenHarmony设备开发入门【最新版】
9.沉浸式剖析OpenHarmony源代码
10.系统定制指南
11.【OpenHarmony】Uboot 驱动加载流程
12.OpenHarmony构建系统--GN与子系统、部件、模块详解
13.ohos开机init启动流程
14.鸿蒙版性能优化指南
.......
Initialize(Service *service, Identity identity):Servcie 初始化函数,一般是要保存 Service 初始化生成的身份信息用于后续收发消息
/**
* 函数功能:Servcie 初始化函数,一般是要保存 Service 初始化生成的身份信息用于后续收发消息
* 参数:
* service:服务名称
* identity:标识服务和 feature
* 返回值:服务名
* */
static BOOL Initialize(Service *service, Identity identity)
{
if (service == NULL) {
return FALSE;
}
((DistributedService*) service)->identity = identity; // ID 标识
return TRUE;
}
MessageHandle(Service *service, Request *request):信息处理函数
/**
* 函数功能:信息处理函数
* 参数:
* service:服务名称
* request:请求内容
* */
static BOOL MessageHandle(Service *service, Request *request)
{
if (request == NULL || service == NULL) { // 参数检验
return FALSE;
}
/* process for a specific service-level msgId can be added below */
switch (request->msgId) {
default: {
HILOGW("[Unkonwn msgId = %d]", request->msgId);
break;
}
}
return TRUE;
}
GetTaskConfig(Service *service):返回 Service 对应的 Task 配置
/**
* 函数功能:返回 Service 对应的 Task 配置
*
* */
static TaskConfig GetTaskConfig(Service *service)
{
// LEVEL_HIGH:多服务共享任务的ID
// PRI_NORMAL:服务优先级信息
// STACK_SIZE:任务栈容量的大小
// QUEUE_SIZE:任务队列的大小
// SINGLE_TASK:任务类型
TaskConfig config = {LEVEL_HIGH, PRI_NORMAL, STACK_SIZE, QUEUE_SIZE, SINGLE_TASK};
return config;
}
Init():初始化服务,通过获取实例,来注册服务
static void Init()
{
/**
* 函数功能:初始化服务,通过获取实例,来注册服务
* 参数:
* g_distributedService:全局分布式服务
* */
BOOL result = SAMGR_GetInstance()->RegisterService((Service *)&g_distributedService);
HILOGI("[dms service start %s]", result ? "success" : "failed");
}
SYS_SERVICE_INIT(Init);