会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
Happy coding!
博客园
首页
新随笔
联系
订阅
管理
继续贴几个MessageQ的函数
继续贴几个MessageQ的函数:
/**/
/*
*使用qstatus的时候要将.init文件中的ENABLE_SBS设置为YES
*ENABLE_SBS MessageQ给出的解释:start selective broadcast and AVAIL/UNAVAIL
*/
/**/
/*
*查询MessageQ的队列中有多少条消息
*/
int32 qpendings(
short
qid,
int
*
mailNum)
{
int32 dmq_status;
int32 num_queues;
short
q_list[
1
];
int32 pend_list[
1
];
int
i;
i
=
-
1
;
num_queues
=
1
;
q_list[
0
]
=
qid;
dmq_status
=
putil_show_pending(
&
num_queues,
q_list,
pend_list );
if
( dmq_status
!=
PAMS__SUCCESS )
{
mailNum
=
&
i;
return
( dmq_status );
}
*
mailNum
=
pend_list[
0
];
return
(
0
);
}
/**/
/*
*判断队列状态MSG_TYPE_AVAIL为attached MSG_TYPE_UNAVAIL为unattached
*调用了三个函数AvailRegister,AvailGet, AvailDeregister
*函数在MesssageQ的Example里面都能找到
*/
int32 qstatus(
short
qid)
{
short
qstate;
q_address Avail_server;
q_address target_q;
short
qavail;
short
Rc;
char
priority;
short
msg_class;
short
msg_type;
short
msg_area_len;
short
msg_data_len;
int32 dmq_status;
int32 sel_filter;
q_address msg_source;
struct
PSB get_psb;
int32 timeout
=
30
;
char
*
groupid,
*
getenv( );
groupid
=
getenv(
"
DMQ_GROUP_ID
"
);
qname2id(
"
AVAIL_SERVER
"
,
&
qavail);
Avail_server.au.queue
=
qavail;
Avail_server.au.group
=
atoi(groupid);
target_q.au.queue
=
qid;
target_q.au.group
=
atoi(groupid);
Rc
=
AvailRegister(target_q,Avail_server);
if
(Rc
!=
PAMS__SUCCESS)
{
/**/
/*
return;
*/
}
printf(
"
AvailRegister succ\n
"
);
Rc
=
AvailGet();
if
(Rc
==
MSG_TYPE_AVAIL)
qstate
=
MSG_TYPE_AVAIL;
else
if
(Rc
==
MSG_TYPE_UNAVAIL)
qstate
=
MSG_TYPE_UNAVAIL;
else
qstate
=
0
;
Rc
=
AvailDeregister(target_q, Avail_server);
return
(int32)qstate;
}
posted on
2008-09-05 06:47
我一路走来。。。
阅读(
553
) 评论(
1
)
收藏
举报
刷新页面
返回顶部