23 #ifdef LIXA_TRACE_MODULE
24 # undef LIXA_TRACE_MODULE
26 #define LIXA_TRACE_MODULE LIXA_TRACE_MOD_XTA
53 if (LIXA_RC_OK != (rc = xta_transaction_enlist_resource(
55 throw Exception(rc,
"xta_transaction_enlist_resource");
61 if (LIXA_RC_OK != (rc = xta_transaction_start(
62 tx, (
int)MultipleBranches)))
63 throw Exception(rc,
"xta_transaction_start");
68 int rc = xta_transaction_commit(
tx, NonBlocking);
69 if ((NonBlocking && LIXA_RC_WOULD_BLOCK != rc) ||
70 (!NonBlocking && LIXA_RC_OK != rc))
71 throw Exception(rc,
"xta_transaction_commit");
77 if (LIXA_RC_OK != (rc = xta_transaction_rollback(
tx)))
78 throw Exception(rc,
"xta_transaction_rollback");
84 if (LIXA_RC_OK != (rc = xta_transaction_suspend(
tx, Flags)))
85 throw Exception(rc,
"xta_transaction_suspend");
91 if (LIXA_RC_OK != (rc = xta_transaction_resume(
92 tx, XidString.c_str(), Flags)))
93 throw Exception(rc,
"xta_transaction_resume");
99 if (LIXA_RC_OK != (rc = xta_transaction_recover(
tx)))
100 throw Exception(rc,
"xta_transaction_recover");
106 if (LIXA_RC_OK != (rc = xta_transaction_branch(
tx, XidString.c_str())))
107 throw Exception(rc,
"xta_transaction_branch");
112 const xta_xid_t *xid = NULL;
113 if (NULL == (xid = xta_transaction_get_xid(
tx)))
114 throw Exception(LIXA_RC_NULL_OBJECT,
"xta_transaction_get_xid");
virtual xta_xa_resource_t * getCBaseXaResource()=0
Transaction(xta_transaction_t *tx)
void resume(const string &XidString, long Flags=TMRESUME)
void branch(const string &XidString)
void start(bool MultipleBranches=false)
void enlistResource(XaResource *xaRes)
void commit(bool NonBlocking=false)
void suspend(long Flags=TMMIGRATE)