继续贴几个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;
}
*使用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;
}