OpenHarmony之分布式软总线discovery_service.c(四)
·
往期推文全新看点(文中附带全新鸿蒙5.0全栈学习笔录)
✏️ 鸿蒙应用开发与鸿蒙系统开发哪个更有前景?
✏️ 嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~
✏️ 对于大前端开发来说,转鸿蒙开发究竟是福还是祸?
✏️ 鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?
✏️ 记录一场鸿蒙开发岗位面试经历~
✏️ 持续更新中……
/*
函数功能: 查找已存模块
函数参数:
1. packageName: 要查找的模块名
2. publishId : 要查找的发布ID
函数返回值: 返回查找的模块信息,否则返回NULL
详细:
1. 检查参数
2. 遍历g_publishModule,比较每个used属性为1的模块
3. 如果找到要找的模块那么就返回该服务模块,否则返回NULL
*/
PublishModule *FindExistModule(const char *packageName, int publishId)
{
if (packageName == NULL || g_publishModule == NULL) {
return NULL;
}
for (int i = 0; i < MAX_MODULE_COUNT; i++) {
if (g_publishModule[i].used == 0) {
continue;
}
//used == 1,服务已经发布
if (strcmp(g_publishModule[i].package, packageName) == 0 && g_publishModule[i].publishId == publishId) {
return &g_publishModule[i];
}
}
return NULL; //3个used = 0 或者 服务还未发布
}
//判断是否所有服务模块都是可用的
unsigned int IsAllModuleFree(void)
{
//为NULL,表示没有发布任何服务模块
if (g_publishModule == NULL) {
return 1;
}
//遍历,如果有一个used为一,表示不是所有模块都是可用的
for (int i = 0; i < MAX_MODULE_COUNT; i++) {
if (g_publishModule[i].used == 1) {
return 0;
}
}
return 1;
}
/*
函数功能: 查找第一个未使用
*/
PublishModule *FindFreeModule(void)
{
if (g_publishModule == NULL) {
return NULL;
}
for (int i = 0; i < MAX_MODULE_COUNT; i++) {
if (g_publishModule[i].used == 1) {
continue;
}
//返回第一个used==0的服务模块
return &g_publishModule[i];
}
return NULL;
}
/*
函数功能: 通过功能得到功能所对应的位图
函数参数:
capability: 功能
capabilityBitmap: 保存得到的功能对应的位图
函数返回:
成功返回0,否则-1
详细:
1,检查参数
2. 遍历功能对应的位图,如果g_capabilityMap[i]功能位图对应的功能与capability相同,那么用capabilityBitmap存储g_capabilityMap[i].bitmap
*/
int ParseCapability(const char* capability, unsigned short *capabilityBitmap)
{
if (capability == NULL || capabilityBitmap == NULL) {
return ERROR_FAIL;
}
for (unsigned int i = 0; i < sizeof(g_capabilityMap) / sizeof(CapabilityMap); i++) {
if (!strcmp(g_capabilityMap[i].capability, capability)) {
*capabilityBitmap = g_capabilityMap[i].bitmap;
return ERROR_SUCCESS;
}
}
return ERROR_FAIL;
}
更多推荐
所有评论(0)