broadcast_service.c文件分析
该文件位于分布式系统模块下,主要是广播服务函数。
文件路径
代码分析
一、相关结构体和宏定义
Identity结构体
struct Identity {
/** Service ID */
int16 serviceId; //服务id
/** Feature ID */
int16 featureId; //特征信息
/** Message queue ID */
MQueueId queueId; //队列信息id
};
广播服务结构体的定义
static BroadcastService g_broadcastService = {
GetName, //获取服务名字
Initialize, //初始化服务
MessageHandle, //消息处理
GetTaskConfig, //获取任务配置
};//定义一个广播服务结构体
消息配置信息
struct TaskConfig {
/**
* ID of a multi-service sharing task. For details about the level definition,
* see {@link SpecifyTag}.
*/
int16 level;
/** Task priority. For details about the definition of priority, see {@link TaskPriority}. */
int16 priority;
/** Size of a task stack */
uint16 stackSize;
/** Size of a task queue */
uint16 queueSize;
/** Task type. For details about the taskFlags definition, see {@link TaskType}. */
uint8 taskFlags;
};
消息类型的共用体
enum BroadcastMsgType {
BROADCAST_MSG,
};
二、函数定义
主要是四个函数,主要功能获取服务名、初始化、消息的处理,获取进程任务配置。
static void Init(void)
{
SAMGR_GetInstance()->RegisterService((Service *)&g_broadcastService);
}
SYS_SERVICE_INIT(Init);
//获取服务名
static const char *GetName(Service *service)
{
(void)service;
return BROADCAST_SERVICE;
}
//初始化函数。主要判断服务是否空
static BOOL Initialize(Service *service, Identity identity)
{
(void)identity;
if (service == NULL) {
return FALSE;
}
return TRUE;
}
//消息处理
static BOOL MessageHandle(Service *service, Request *request)
{
(void)service;
switch (request->msgId) {
case BROADCAST_MSG://看消息id是否存在
break;
default:
break;
}
return TRUE;
}
//获取任务配置
static TaskConfig GetTaskConfig(Service *service)
{
(void)service;
TaskConfig config = {
LEVEL_HIGH, PRI_ABOVE_NORMAL, 0x800, 40, SPECIFIED_TASK};
//定义好各个配置的信息
return config;
}
感谢阅读和点赞