OpenHarmony分布式调度详解|dmslite.c

59 阅读2分钟

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);