📄 monitorloop.c
字号:
#include "kernal.h"
#include "kernal.c"
#define MONITOR_LOOP_CMD_DATA 1
//defined in kernel.c, Information of remote users
extern REMOTE_USER_INFO online_user[MAX_REMOTE_USER];
//defined in kernel.c, the parameters in the runtime.
extern SYSTEM_RUNTIME runtime;
void mlNetSend(MONITOR_MESSAGE *msg);
//function: monitorLoop()
//description: 任务入口函数
//arguments: no
//return: no
void monitorLoop(void)
{
S32 ret;
while(1)
{
ret = receive_message(); //lack argument
if (ret < sizeof(CMD_MESSAGE))
continue;
switch(msg->cmd)
{
case MONITOR_LOOP_CMD_DATA:
mlNetSend(msg);
break;
default:
break;
}
}
}
//function: mlNetSend()
//description: 有数据到达的时候,将数据发送给用户。
//arguments: MONITOR_MESSAGE
//return: no
void mlNetSend(MONITOR_MESSAGE *msg)
{
S32 i;
struct sockaddr_in to;
for (i = 0; i < MAX_REMOTE_USER; i++)
{
switch(online_user[i].user_type)
{
case FRAME_USER:
if (mpGetType() != VIDEO_I_FRAME)
continue;
switch(online_user[i].trans_type)
{
case UI_TCP:
mpSend(msg->datahead, online_user[i].socket_handle);
break;
case UI_UDP:
case UI_MC:
to.sin_len = sizeof(struct sockaddr);
to.sin_family = AF_INET;
to.sin_port = htons(online_user[i].port);
to.sin_addr.s_addr = htonl(
online_user[i].ipaddress.long_address);
mpSendto(msg->datahead, runtime.mc_socket, &to);
break;
default:
}
break;
case TALK_USER:
if (mpGetType() != AUDIO_FRAME)
continue;
switch(online_user[i].trans_type)
{
case UI_TCP:
mpSend(msg->datahead, online_user[i].socket_handle);
break;
case UI_UDP:
case UI_MC:
to.sin_len = sizeof(struct sockaddr);
to.sin_family = AF_INET;
to.sin_port = htons(online_user[i].port);
to.sin_addr.s_addr = htonl(
online_user[i].ipaddress.long_address);
mpSendto(msg->datahead, runtime.mc_socket, &to);
break;
default:
}
break;
case VIDEO_USER:
switch(online_user[i].trans_type)
{
case UI_TCP:
mpSend(msg->datahead, online_user[i].socket_handle);
break;
case UI_UDP:
case UI_MC:
to.sin_len = sizeof(struct sockaddr);
to.sin_family = AF_INET;
to.sin_port = htons(online_user[i].port);
to.sin_addr.s_addr = htonl(
online_user[i].ipaddress.long_address);
mpSendto(msg->datahead, runtime.mc_socket, &to);
break;
default:
}
break;
default:
}
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -