XTA: API Reference for C++ language

xa.h
Go to the documentation of this file.
1 /*
2  * This header is NOT original but it's a derivative work of this public
3  * documentation:
4  *
5  * X/Open CAE Specification
6  * Distributed Transaction Processing:
7  * The XA Specification
8  * ISBN: 1 872630 24 3
9  * X/Open Document Number: XO/CAE/91/300
10  */
11 
12 /*
13  * Start of xa.h header
14  *
15  * Define a symbol to prevent multiple inclusions of this header file
16  */
17 #ifndef XA_H
18 # define XA_H
19 
20 /*
21  * Transaction branch identification: XID and NULLXID:
22  */
23 #define XIDDATASIZE 128 /* size in bytes */
24 #define MAXGTRIDSIZE 64 /* maximum size in bytes of gtrid */
25 #define MAXBQUALSIZE 64 /* maximum size in bytes of bqual */
26 #ifndef XID_T_TYPE
27 # define XID_T_TYPE
28 struct xid_t
29 {
30  long formatID; /* format identifier */
31  long gtrid_length; /* value from 1 through 64 */
32  long bqual_length; /* value from 1 through 64 */
34 };
35 typedef struct xid_t XID;
36 #endif /* XID_T_TYPE */
37 /*
38  * A value of -1 in formatID means that the XID is null.
39  */
40 #ifndef NULLXID
41 # define NULLXID -1
42 #endif
43 
44 
45 /*
46  * Declarations of routines by which RMs call TMs:
47  */
51 extern int ax_reg(int rmid, XID *xid, long flags);
52 
56 extern int ax_unreg(int rmid, long flags);
57 
58 
59 
63 #define RMNAMESZ 32
64 
67 #define MAXINFOSIZE 256
68 
69 
74 {
78  char name[RMNAMESZ];
82  long flags;
86  long version;
90  int (*xa_open_entry)(char *, int, long);
94  int (*xa_close_entry)(char *, int, long);
98  int (*xa_start_entry)(const XID *, int, long);
102  int (*xa_end_entry)(const XID *, int, long);
106  int (*xa_rollback_entry)(const XID *, int, long);
110  int (*xa_prepare_entry)(const XID *, int, long);
114  int (*xa_commit_entry)(const XID *, int, long);
118  int (*xa_recover_entry)(XID *, long, int, long);
122  int (*xa_forget_entry)(const XID *, int, long);
126  int (*xa_complete_entry)(int *, int *, int, long);
127 };
128 
129 
130 
131 typedef struct xa_switch_t *(*lixa_get_xa_switch_f)(void);
132 
133 
134 
135 /*
136  * Flag definitions for the RM switch
137  */
141 #define TMNOFLAGS 0x00000000L
142 
145 #define TMREGISTER 0x00000001L
146 
149 #define TMNOMIGRATE 0x00000002L
150 
153 #define TMUSEASYNC 0x00000004L
154 /*
155  * Flag definitions for xa_ and ax_ routines
156  */
157 /* use TMNOFLAGS, defined above, when not specifying other flags */
161 #define TMASYNC 0x80000000L
162 
165 #define TMONEPHASE 0x40000000L
166 
169 #define TMFAIL 0x20000000L
170 
173 #define TMNOWAIT 0x10000000L
174 
177 #define TMRESUME 0x08000000L
178 
181 #define TMSUCCESS 0x04000000L
182 
185 #define TMSUSPEND 0x02000000L
186 
189 #define TMSTARTRSCAN 0x01000000L
190 
193 #define TMENDRSCAN 0x00800000L
194 
197 #define TMMULTIPLE 0x00400000L
198 
201 #define TMJOIN 0x00200000L
202 
205 #define TMMIGRATE 0x00100000L
206 /*
207  * NOTE: this is an extension implemented by LIXA but it's outside the XA
208  * standard
209  * Flag definitions for xta_
210  */
215 #define TMXTABRANCH 0x00008000L
216 
217 
218 
219 /*
220  * ax_() return codes (transaction manager reports to resource manager)
221  */
225 #define TM_JOIN 2
226 
229 #define TM_RESUME 1
230 
233 #define TM_OK 0
234 
237 #define TMER_TMERR -1
238 
241 #define TMER_INVAL -2
242 
245 #define TMER_PROTO -3
246 
247 
248 
249 /*
250  * xa_() return codes (resource manager reports to transaction manager)
251  */
255 #define XA_RBBASE 100
256 
259 #define XA_RBROLLBACK XA_RBBASE
260 
263 #define XA_RBCOMMFAIL XA_RBBASE+1
264 
267 #define XA_RBDEADLOCK XA_RBBASE+2
268 
271 #define XA_RBINTEGRITY XA_RBBASE+3
272 
276 #define XA_RBOTHER XA_RBBASE+4
277 
280 #define XA_RBPROTO XA_RBBASE+5
281 
284 #define XA_RBTIMEOUT XA_RBBASE+6
285 
288 #define XA_RBTRANSIENT XA_RBBASE+7
289 
292 #define XA_RBEND XA_RBTRANSIENT
293 
296 #define XA_NOMIGRATE 9
297 
300 #define XA_HEURHAZ 8
301 
304 #define XA_HEURCOM 7
305 
308 #define XA_HEURRB 6
309 
312 #define XA_HEURMIX 5
313 
316 #define XA_RETRY 4
317 
320 #define XA_RDONLY 3
321 
324 #define XA_OK 0
325 
328 #define XAER_ASYNC -2
329 
332 #define XAER_RMERR -3
333 
336 #define XAER_NOTA -4
337 
340 #define XAER_INVAL -5
341 
344 #define XAER_PROTO -6
345 
348 #define XAER_RMFAIL -7
349 
352 #define XAER_DUPID -8
353 
356 #define XAER_OUTSIDE -9
357 
361 #define XAER_AFFINITY -10
362 
367 #define LIXA_XAER_HAZARD -20
368 
369 
370 
371 #endif /* ifndef XA_H */
372 /*
373  * End of xa.h header
374  */
int(* xa_prepare_entry)(const XID *, int, long)
Definition: xa.h:110
int(* xa_end_entry)(const XID *, int, long)
Definition: xa.h:102
long gtrid_length
Definition: xa.h:31
int(* xa_complete_entry)(int *, int *, int, long)
Definition: xa.h:126
long bqual_length
Definition: xa.h:32
int(* xa_commit_entry)(const XID *, int, long)
Definition: xa.h:114
Definition: xa.h:73
int(* xa_open_entry)(char *, int, long)
Definition: xa.h:90
char data[XIDDATASIZE]
Definition: xa.h:33
#define XIDDATASIZE
Definition: xa.h:23
int(* xa_forget_entry)(const XID *, int, long)
Definition: xa.h:122
int(* xa_close_entry)(char *, int, long)
Definition: xa.h:94
long flags
Definition: xa.h:82
int ax_reg(int rmid, XID *xid, long flags)
Definition: xa.h:28
int ax_unreg(int rmid, long flags)
long formatID
Definition: xa.h:30
int(* xa_start_entry)(const XID *, int, long)
Definition: xa.h:98
int(* xa_rollback_entry)(const XID *, int, long)
Definition: xa.h:106
int(* xa_recover_entry)(XID *, long, int, long)
Definition: xa.h:118
#define RMNAMESZ
Definition: xa.h:63
char name[RMNAMESZ]
Definition: xa.h:78
long version
Definition: xa.h:86

Copyright © 2009-2019, Christian Ferrari tiian@users.sourceforge.net http://www.tiian.org/