Before any operation can be attempted with a server-side queue (system queue), a process must create a new queue, or open an existing queue, by calling the function:
ctCONV NINT ctDECL ctSysQueueOpen(pTEXT qname,NINT qmode);
Parameter qname identifies the queue to be opened. If the queue specified by qname does not exist, a new queue is created. Parameter qmode is currently reserved for future use and should be set to zero. ctSysQueueOpen() returns a queue handle on success, or a negative number as the error code.
Example
#include <ctreep.h>
int main(void)
{
NINT eRet = 0;
NINT hQueue = -1;
TEXT buffer[256];
NINT isam_init = 0;
/* init ISAM */
eRet = (NINT)INTISAMX(6, 7, 4, 6, 0, "ADMIN", "ADMIN", "FAIRCOMS");
if (eRet != NO_ERROR)
{
printf("INTISAM failed with error %d\n", eRet);
goto Exit;
}
isam_init++;
/* create a new queue */
hQueue = ctSysQueueOpen("MyQueue", 0);
if (hQueue < 0)
{
eRet = -hQueue;
printf("ctSysQueueOpen failed with error %d\n", eRet);
goto Exit;
}
/* wait 100 ms for a new message */
eRet = ctSysQueueRead(hQueue, buffer, sizeof(buffer), 100);
/* check if read time-out */
if (eRet == NO_ERROR)
printf("ctSysQueueRead succeeded\n");
else if (eRet == NTIM_ERR)
printf("ctSysQueueRead time-out\n");
else
printf("ctSysQueueRead failed with error %d\n", eRet);
Exit:
/* close the queue */
if (hQueue >= 0)
{
eRet = ctSysQueueClose(hQueue);
if (eRet != NO_ERROR)
printf("ctSysQueueClose failed with error %d\n", eRet);
}
if (isam_init)
CLISAM();
return (int)eRet;
}