往期知识点记录:
- 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总
- OpenHarmony轻量系统服务管理|samgr_server功能详解(一)
- OpenHarmony轻量系统服务管理|samgr_server功能详解(二)
- OpenHarmony轻量系统服务管理|samgr_server功能详解(三)
- OpenHarmony轻量系统服务管理|samgr_server功能详解(四)
- OpenHarmony轻量系统服务管理|samgr_server功能详解(五)
- OpenHarmony轻量系统服务管理|samgr_server功能详解(六)
- OpenHarmony分布式调度详解|dmslite.c
- OpenHarmony分布式调度详解|dmslite_feature.c 源码阅读
- 持续更新中……
轻量级分布式结构体的初始化
// 轻量级分布式结构体的初始化
DmsLite g_dmslite = {
/* feature functions */
.GetName = GetName, // 获取服务名
.OnInitialize = OnInitialize, // Servcie 初始化函数
.OnStop = OnStop,
.OnMessage = OnMessage,
.identity = {-1, -1, NULL},
/* dms interface for other subsystems */
DEFAULT_IUNKNOWN_ENTRY_BEGIN, // 默认未知设备开始
.StartRemoteAbility = StartRemoteAbilityInner,
DEFAULT_IUNKNOWN_ENTRY_END // // 默认未知设备结束
};
获取分布式 Feature
// 获取分布式 Feature
DmsLite *GetDmsLiteFeature()
{
return &g_dmslite;
}
获取服务名
/**
* 函数功能:获取服务名
* 参数:
* feature:feature 名
* */
static const char *GetName(Feature *feature)
{
if (feature == NULL) {
return EMPTY_FEATURE_NAME;
}
return DMSLITE_FEATURE;
}
初始化软总线服务
/**
* 函数功能:初始化软总线服务
* 参数:
* 1.feature:feature 名
* */
static void OnInitialize(Feature *feature, Service *parent, Identity identity)
{
if (feature == NULL || parent == NULL) {
return;
}
((DmsLite*) feature)->identity = identity;
InitSoftbusService(); // 初始化软总线服务
}
连接远端处理消息
static BOOL OnMessage(Feature *feature, Request *request)
{
if (feature == NULL || request == NULL) {
return FALSE;
}
// 请求消息的 ID
/* process for a specific feature-level msgId can be added below */
switch (request->msgId) {
case START_REMOTE_ABILITY:
StartRemoteAbility((const Want *) request->data); // 启动远端 ability
// 启动远端 ability
break;
// 会话打开
case SESSION_OPEN:
HandleSessionOpened(request->msgValue); // 处理会话信息开启
break;
case SESSION_CLOSE:
// 会话关闭
HandleSessionClosed(request->msgValue);
break;
case BYTES_RECEIVED:
// 处理接受的字节信息
HandleBytesReceived(request->msgValue, request->data, request->len);
break;
default: {
// 出错放到日志上
HILOGW("[Unkonwn msgId = %d]", request->msgId);
break;
}
}
return TRUE;
}
feature 初始化
// feature 初始化
static void Init()
{
// 注册 feature
BOOL result = SAMGR_GetInstance()->RegisterFeature(DISTRIBUTED_SCHEDULE_SERVICE, (Feature*) &g_dmslite);
if (!result) { // 是否注册成功
HILOGE("[dms register feature failed]");
}
// 注册 Feature的API
result = SAMGR_GetInstance()->RegisterFeatureApi(DISTRIBUTED_SCHEDULE_SERVICE,
DMSLITE_FEATURE, GET_IUNKNOWN(g_dmslite));
if (!result) {
HILOGE("[dms register feature api failed]");
}
}
// 系统 feature 初始化
SYS_FEATURE_INIT(Init);
写在最后
如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
- 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
- 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
- 想要获取更多完整鸿蒙最新学习资源,请看下图提示: