34 #include "lixa_trace.h"
35 #include "liblixamy.h"
42 #ifdef LIXA_TRACE_MODULE
43 # undef LIXA_TRACE_MODULE
45 #define LIXA_TRACE_MODULE LIXA_TRACE_MOD_XTA
71 const char *open_info)
73 enum Exception { G_TRY_MALLOC_ERROR
74 , XTA_MYSQL_XA_RESOURCE_INIT_ERROR
79 LIXA_TRACE((
"xta_mysql_xa_resource_new\n"));
84 THROW(G_TRY_MALLOC_ERROR);
87 this, connection, name, open_info)))
88 THROW(XTA_MYSQL_XA_RESOURCE_INIT_ERROR);
93 case G_TRY_MALLOC_ERROR:
96 case XTA_MYSQL_XA_RESOURCE_INIT_ERROR:
105 LIXA_TRACE((
"xta_mysql_xa_resource_new/excp=%d/"
106 "ret_cod=%d/errno=%d\n", excp, ret_cod, errno));
114 enum Exception { NONE } excp;
117 LIXA_TRACE((
"xta_mysql_xa_resource_delete\n"));
134 LIXA_TRACE((
"xta_mysql_xa_resource_delete/excp=%d/"
135 "ret_cod=%d/errno=%d\n", excp, ret_cod, errno));
143 const char *
name,
const char *open_info)
145 enum Exception { NULL_OBJECT
146 , XTA_ACQUIRED_XA_RESOURCE_INIT_ERROR
150 LIXA_TRACE((
"xta_mysql_xa_resource_init\n"));
152 if (NULL == connection)
159 THROW(XTA_ACQUIRED_XA_RESOURCE_INIT_ERROR);
167 memset(&xa_resource->
lssr, 0,
sizeof(
struct lixa_sw_status_rm_s));
175 case XTA_ACQUIRED_XA_RESOURCE_INIT_ERROR:
184 LIXA_TRACE((
"xta_mysql_xa_resource_init/excp=%d/"
185 "ret_cod=%d/errno=%d\n", excp, ret_cod, errno));
193 enum Exception { NONE } excp;
196 LIXA_TRACE((
"xta_mysql_xa_resource_clean\n"));
214 LIXA_TRACE((
"xta_mysql_xa_resource_clean/excp=%d/"
215 "ret_cod=%d/errno=%d\n", excp, ret_cod, errno));
222 int rmid,
long flags)
224 enum Exception { OBJ_CORRUPTED
228 LIXA_TRACE((
"xta_mysql_xa_open\n"));
233 LIXA_TRACE((
"xta_mysql_xa_open: MySQL connection is already open "
236 LIXA_TRACE((
"xta_mysql_xa_open: MySQL connection is NULL!\n"));
237 THROW(OBJ_CORRUPTED);
241 xa_resource->
lssr.rmid = rmid;
242 xa_resource->
lssr.rm_type = LIXA_SW_STATUS_RM_TYPE_MYSQL;
243 xa_resource->
lssr.state.R = 1;
258 LIXA_TRACE((
"xta_mysql_xa_open/excp=%d/"
259 "ret_cod=%d/errno=%d\n", excp, ret_cod, errno));
266 int rmid,
long flags)
268 enum Exception { OBJ_CORRUPTED
272 LIXA_TRACE((
"xta_mysql_xa_close\n"));
275 if (NULL != this->connection) {
276 LIXA_TRACE((
"xta_mysql_xa_close: MySQL connection (%p) must be "
277 "closed by the Application Program\n",
280 LIXA_TRACE((
"xta_mysql_xa_close: MySQL connection is NULL!\n"));
281 THROW(OBJ_CORRUPTED);
296 LIXA_TRACE((
"xta_mysql_xa_close/excp=%d/"
297 "ret_cod=%d/errno=%d\n", excp, ret_cod, errno));
304 const XID *xid,
int rmid,
long flags)
306 enum Exception { OBJ_CORRUPTED
310 LIXA_TRACE((
"xta_mysql_xa_start\n"));
313 if (NULL == this->connection) {
314 LIXA_TRACE((
"xta_mysql_xa_start: MySQL connection is NULL!\n"));
315 THROW(OBJ_CORRUPTED);
318 ret_cod = lixa_my_start_core(&this->lssr, xid, rmid, flags);
331 LIXA_TRACE((
"xta_mysql_xa_start/excp=%d/"
332 "ret_cod=%d/errno=%d\n", excp, ret_cod, errno));
339 int rmid,
long flags)
341 enum Exception { OBJ_CORRUPTED
345 LIXA_TRACE((
"xta_mysql_xa_end\n"));
348 if (NULL == this->connection) {
349 LIXA_TRACE((
"xta_mysql_xa_end: MySQL connection is NULL!\n"));
350 THROW(OBJ_CORRUPTED);
353 ret_cod = lixa_my_end_core(&this->lssr, xid, rmid, flags);
366 LIXA_TRACE((
"xta_mysql_xa_end/excp=%d/"
367 "ret_cod=%d/errno=%d\n", excp, ret_cod, errno));
375 int rmid,
long flags)
377 enum Exception { OBJ_CORRUPTED
381 LIXA_TRACE((
"xta_mysql_xa_rollback\n"));
384 if (NULL == this->connection) {
385 LIXA_TRACE((
"xta_mysql_xa_rollback: MySQL connection is NULL!\n"));
386 THROW(OBJ_CORRUPTED);
389 ret_cod = lixa_my_rollback_core(&this->lssr, xid, rmid, flags);
402 LIXA_TRACE((
"xta_mysql_xa_rollback/excp=%d/"
403 "ret_cod=%d/errno=%d\n", excp, ret_cod, errno));
410 int rmid,
long flags)
412 enum Exception { OBJ_CORRUPTED
416 LIXA_TRACE((
"xta_mysql_xa_prepare\n"));
419 if (NULL == this->connection) {
420 LIXA_TRACE((
"xta_mysql_xa_prepare: MySQL connection is NULL!\n"));
421 THROW(OBJ_CORRUPTED);
424 ret_cod = lixa_my_prepare_core(&this->lssr, xid, rmid, flags);
437 LIXA_TRACE((
"xta_mysql_xa_prepare/excp=%d/"
438 "ret_cod=%d/errno=%d\n", excp, ret_cod, errno));
445 int rmid,
long flags)
447 enum Exception { OBJ_CORRUPTED
451 LIXA_TRACE((
"xta_mysql_xa_commit\n"));
454 if (NULL == this->connection) {
455 LIXA_TRACE((
"xta_mysql_xa_commit: MySQL connection is NULL!\n"));
456 THROW(OBJ_CORRUPTED);
459 ret_cod = lixa_my_commit_core(&this->lssr, xid, rmid, flags);
472 LIXA_TRACE((
"xta_mysql_xa_commit/excp=%d/"
473 "ret_cod=%d/errno=%d\n", excp, ret_cod, errno));
480 XID *xids,
long count,
int rmid,
long flags)
482 enum Exception { OBJ_CORRUPTED
486 LIXA_TRACE((
"xta_mysql_xa_recover\n"));
489 if (NULL == this->connection) {
490 LIXA_TRACE((
"xta_mysql_xa_recover: MySQL connection is NULL!\n"));
491 THROW(OBJ_CORRUPTED);
494 ret_cod = lixa_my_recover_core(&this->lssr, xids, count, rmid, flags);
507 LIXA_TRACE((
"xta_mysql_xa_recover/excp=%d/"
508 "ret_cod=%d/errno=%d\n", excp, ret_cod, errno));
515 int rmid,
long flags)
517 enum Exception { OBJ_CORRUPTED
521 LIXA_TRACE((
"xta_mysql_xa_forget\n"));
524 if (NULL == this->connection) {
525 LIXA_TRACE((
"xta_mysql_xa_forget: MySQL connection is NULL!\n"));
526 THROW(OBJ_CORRUPTED);
529 ret_cod = lixa_my_forget_core(&this->lssr, xid, rmid, flags);
542 LIXA_TRACE((
"xta_mysql_xa_forget/excp=%d/"
543 "ret_cod=%d/errno=%d\n", excp, ret_cod, errno));
void xta_mysql_xa_resource_clean(xta_mysql_xa_resource_t *xa_resource)
int xta_mysql_xa_close(xta_xa_resource_t *context, char *xa_info, int rmid, long flags)
int xta_mysql_xa_end(xta_xa_resource_t *context, const XID *xid, int rmid, long flags)
#define LIXA_RC_NULL_OBJECT
#define LIXA_RC_INTERNAL_ERROR
int xta_mysql_xa_open(xta_xa_resource_t *context, char *xa_info, int rmid, long flags)
void xta_acquired_xa_resource_clean(xta_acquired_xa_resource_t *xa_resource)
int xta_mysql_xa_commit(xta_xa_resource_t *context, const XID *xid, int rmid, long flags)
int xta_mysql_xa_start(xta_xa_resource_t *context, const XID *xid, int rmid, long flags)
int xta_mysql_xa_prepare(xta_xa_resource_t *context, const XID *xid, int rmid, long flags)
static const struct xta_iface_s xta_mysql_iface
#define LIXA_RC_G_TRY_MALLOC_ERROR
void xta_mysql_xa_resource_delete(xta_mysql_xa_resource_t *xa_resource)
void lixa_iface_set_xta(lixa_iface_t *iface, const struct xta_iface_s *xta, xta_xa_resource_t *context)
int xta_mysql_xa_rollback(xta_xa_resource_t *context, const XID *xid, int rmid, long flags)
struct lixa_sw_status_rm_s lssr
xta_xa_resource_t xa_resource
struct act_rsrmgr_config_s act_rsrmgr_config
int xta_mysql_xa_forget(xta_xa_resource_t *context, const XID *xid, int rmid, long flags)
int xta_acquired_xa_resource_init(xta_acquired_xa_resource_t *xa_resource, const struct xta_iface_s *iface, const char *name, const char *open_info)
int xta_mysql_xa_resource_init(xta_mysql_xa_resource_t *xa_resource, MYSQL *connection, const char *name, const char *open_info)
xta_mysql_xa_resource_t * xta_mysql_xa_resource_new(MYSQL *connection, const char *name, const char *open_info)
int xta_mysql_xa_recover(xta_xa_resource_t *context, XID *xids, long count, int rmid, long flags)