ATMI C Function Reference
tpresume()
—Resumes a global transaction.
#include <atmi.h>
int tpresume(TPTRANID *tranid, long flags)
tpresume()
is used to resume work on behalf of a previously suspended transaction. Once the caller resumes work on a transaction, it must either suspend it with tpsuspend()
, or complete it with one of tpcommit()
or tpabort()
at a later time.
The caller must ensure that its linked resource managers have been opened (via tpopen()
) before it can resume work on any transaction.
tpresume()
places the caller in transaction mode on behalf of the global transaction identifier pointed to by tranid
. It is an error for tranid
to be NULL.
Currently, flags
are reserved for future use and must be set to 0.
In a multithreaded application, a thread in the TPINVALIDCONTEXT
state is not allowed to issue a call to tpresume()
.
tpresume()
returns -1 on error and sets tperrno
to indicate the error condition.
Under the following conditions, tpresume()
fails and sets tperrno
to:
Either tranid
is a NULL pointer, it points to a non-existent transaction identifier (including previously completed or timed-out transactions), or it points to a transaction identifier that the caller is not allowed to resume. The caller's state with respect to the transaction is not changed.
tranid
points to a transaction identifier that another process has already resumed. The caller's state with respect to the transaction is not changed.
The BEA Tuxedo system is unable to resume the global transaction because the caller is currently participating in work outside any global transaction with one or more resource managers. All such work must be completed before a global transaction can be resumed. The caller's state with respect to the local transaction is unchanged.
tpresume()
was called in an improper context (for example, the caller is already in transaction mode). The caller's state with respect to the transaction is not changed.
XA-compliant resource managers must be successfully opened to be included in the global transaction. (See tpopen(3c)
for details.)
A process resuming a suspended transaction must reside on the same logical machine (LMID) as the process that suspended the transaction. For a Workstation client, the workstation handler (WSH) to which it is connected must reside on the same logical machine as the handler for the Workstation client that suspended the transaction.