lrt_tpenqueue
| Communication Functions |
Stores a message in the queue.
int lrt_tpenqueue( char *qspace, char *qname, TPQCTL *ctl, char *data, long len, long flags );
| qspace | Queue space. |
| qname | Queue name. |
| ctl | Additional information about queueing the message, for example overriding the default message placement. |
| data | Pointer to the message buffer. |
| len | Length of the message. |
| flags | Valid flags: TPNOTRAN- if caller is in transaction mode and this flag is set, the message is not enqueued within the same transaction, TPNOBLOCK - request not sent if blocking condition exists, TPNOTIME - caller immune to blocking timeouts, TPSIGRSTRT - any interrupted system calls are re-issued after lrt_tpenqueue. |
The lrt_tpenqueue function stores a message for processing on the queue specified by qname.
Return Values
If lrt_tpenqueue ends successfully, the function returns NULL. If the function ends with an error, it returns -1 and sets the error code in tperrno.
Parameterization
The following argument(s) can be parameterized using standard parameterization: qspace, qname
Example
In the following example data is put on a queue with an application defined user code, the code is read, and the message is taken off the queue.
TPQCTL qCtrl; /* Control structure needed to reference item on queue */
long myAppcURCode; /* Application defined return code */
long myRecovedURCode; /* To read the UR Code */
int rc; /* return code */
char * myQSpace; /* Name of queue space */
char * myQName; /* Name of queue */
char * myDataPtr; /* The data */
long myDataLen; /* Length */
myQSpace = "qspace";
myQName = "qname";
myDataPtr = lrt_tpalloc("STRING", "", 100);
strcpy(myDataPtr, "theData");
myAppcURCode = 100;
/* Put an application defined user code in the control structure */
qCtrl.urcode = myAppcURCode;
/* Put the data and control structure on a queue */
rc = lrt_tpenqueue( myQSpace,
myQName,
&qCtrl,
myDataPtr,
myDataLen,
TPNOTRAN);
/* Recover the application defined user code */
myRecovedURCode = lrt_gettpurcode ();
/* Take the message off the queue by using the same control structure */
rc = lrt_tpdequeue( myQSpace,
myQName,
&qCtrl,
&myDataPtr,
&myDataLen,
TPNOTRAN );

