29 #include "lixa_trace.h"
30 #include "client_conn.h"
37 #ifdef LIXA_TRACE_MODULE
38 # undef LIXA_TRACE_MODULE
40 #define LIXA_TRACE_MODULE LIXA_TRACE_MOD_XTA
45 const char *name,
const char *switch_file,
46 const char *open_info,
const char *close_info)
48 enum Exception { G_TRY_MALLOC_ERROR
49 , XTA_NATIVE_XA_RESOURCE_INIT_ERROR
54 LIXA_TRACE((
"xta_native_xa_resource_new\n"));
59 THROW(G_TRY_MALLOC_ERROR);
62 this, -1, NULL, name, switch_file,
63 open_info, close_info)))
64 THROW(XTA_NATIVE_XA_RESOURCE_INIT_ERROR);
69 case G_TRY_MALLOC_ERROR:
72 case XTA_NATIVE_XA_RESOURCE_INIT_ERROR:
88 LIXA_TRACE((
"xta_native_xa_resource_new/excp=%d/"
89 "ret_cod=%d/errno=%d\n", excp, ret_cod, errno));
98 enum Exception { G_TRY_MALLOC_ERROR
99 , XTA_NATIVE_XA_RESOURCE_INIT_ERROR
104 LIXA_TRACE((
"xta_native_xa_resource_new_by_rmid\n"));
109 THROW(G_TRY_MALLOC_ERROR);
112 this, rmid, config, NULL, NULL, NULL, NULL)))
113 THROW(XTA_NATIVE_XA_RESOURCE_INIT_ERROR);
118 case G_TRY_MALLOC_ERROR:
121 case XTA_NATIVE_XA_RESOURCE_INIT_ERROR:
135 LIXA_TRACE((
"xta_native_xa_resource_new_by_rmid/excp=%d/"
136 "ret_cod=%d/errno=%d\n", excp, ret_cod, errno));
144 enum Exception { NONE } excp;
147 LIXA_TRACE((
"xta_native_xa_resource_delete\n"));
164 LIXA_TRACE((
"xta_native_xa_resource_delete/excp=%d/"
165 "ret_cod=%d/errno=%d\n", excp, ret_cod, errno));
174 const char *switch_file,
const char *open_info,
const char *close_info)
176 enum Exception { NULL_OBJECT
177 , XA_RESOURCE_INIT_ERROR
181 , CLIENT_CONFIG_LOAD_SWITCH_FILE_ERROR
186 LIXA_TRACE((
"xta_native_xa_resource_init\n"));
188 if (NULL == xa_resource)
193 THROW(XA_RESOURCE_INIT_ERROR);
197 if (NULL == name || NULL == switch_file || NULL == open_info ||
199 THROW(INVALID_OPTION);
201 LIXA_TRACE((
"xta_native_xa_resource_init: option open_info "
202 "(" SIZE_T_FORMAT
")"
203 "exceeds MAXINFOSIZE %d\n", strlen(open_info),
207 LIXA_TRACE((
"xta_native_xa_resource_init: option close_info "
208 "(" SIZE_T_FORMAT
")"
209 "exceeds MAXINFOSIZE %d\n", strlen(close_info),
214 xmlCharStrdup(name)))
215 THROW(XML_STRDUP_ERROR1);
218 xmlCharStrdup(switch_file)))
219 THROW(XML_STRDUP_ERROR2);
231 if (
LIXA_RC_OK != (ret_cod = client_config_load_switch_file(
234 THROW(CLIENT_CONFIG_LOAD_SWITCH_FILE_ERROR);
235 LIXA_TRACE((
"xta_native_xa_resource_init: initialized resource "
236 "name='%s', switch_file='%s', xa_open_info='%s', "
237 "xa_close_info='%s'\n",
243 struct act_rsrmgr_config_s *act_rsrmgr;
248 ((client_config_coll_t *)config)->actconf.rsrmgrs->len) {
249 LIXA_TRACE((
"xta_native_xa_resource_init: rmid=%d is out of "
250 "range [0,%u]\n", rmid,
251 ((client_config_coll_t *)config)->
252 actconf.rsrmgrs->len-1));
255 act_rsrmgr = &g_array_index(
256 ((client_config_coll_t *)config)->actconf.rsrmgrs,
257 struct act_rsrmgr_config_s, rmid);
268 case XA_RESOURCE_INIT_ERROR:
273 case XML_STRDUP_ERROR1:
274 case XML_STRDUP_ERROR2:
277 case CLIENT_CONFIG_LOAD_SWITCH_FILE_ERROR:
289 LIXA_TRACE((
"xta_native_xa_resource_init/excp=%d/"
290 "ret_cod=%d/errno=%d\n", excp, ret_cod, errno));
298 enum Exception { CLIENT_CONFIG_UNLOAD_SWITCH_FILE_ERROR
302 LIXA_TRACE((
"xta_native_xa_resource_clean\n"));
324 ret_cod = client_config_unload_switch_file(
326 THROW(CLIENT_CONFIG_UNLOAD_SWITCH_FILE_ERROR);
335 case CLIENT_CONFIG_UNLOAD_SWITCH_FILE_ERROR:
344 LIXA_TRACE((
"xta_native_xa_resource_clean/excp=%d/"
345 "ret_cod=%d/errno=%d\n", excp, ret_cod, errno));
int xta_native_xa_resource_init(xta_native_xa_resource_t *xa_resource, int rmid, const xta_transaction_manager_config_t *config, const char *name, const char *switch_file, const char *open_info, const char *close_info)
#define LIXA_RC_XML_STRDUP_ERROR
#define LIXA_RC_NULL_OBJECT
#define LIXA_RC_INTERNAL_ERROR
int xta_xa_resource_init(xta_xa_resource_t *xa_resource, int native)
void xta_native_xa_resource_clean(xta_native_xa_resource_t *xa_resource)
void xta_transaction_manager_config_t
xta_native_xa_resource_t * xta_native_xa_resource_new_by_rmid(int rmid, const xta_transaction_manager_config_t *config)
#define LIXA_RC_G_TRY_MALLOC_ERROR
xta_native_xa_resource_t * xta_native_xa_resource_new(const char *name, const char *switch_file, const char *open_info, const char *close_info)
struct act_rsrmgr_config_s act_rsrmgr_config
void xta_xa_resource_clean(xta_xa_resource_t *xa_resource)
xta_xa_resource_t xa_resource
#define LIXA_RC_INVALID_OPTION
struct rsrmgr_config_s rsrmgr_config
#define LIXA_RC_OUT_OF_RANGE
void xta_native_xa_resource_delete(xta_native_xa_resource_t *xa_resource)