/*****************************************************************************

Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

*****************************************************************************/

/*
 * Start of xa.h header
 *
 * Define a symbol to prevent multiple inclusions of this header file
 */
#ifndef	XA_H
#define	XA_H

/*
 * Transaction branch identification: XID and NULLXID:
 */
#ifndef XIDDATASIZE

/** Sizes of transaction identifier */
#define	XIDDATASIZE	128		/*!< maximum size of a transaction
					identifier, in bytes */
#define	MAXGTRIDSIZE	 64		/*!< maximum size in bytes of gtrid */
#define	MAXBQUALSIZE	 64		/*!< maximum size in bytes of bqual */

/** X/Open XA distributed transaction identifier */
struct xid_t {
	long formatID;			/*!< format identifier; -1
					means that the XID is null */
	long gtrid_length;		/*!< value from 1 through 64 */
	long bqual_length;		/*!< value from 1 through 64 */
	char data[XIDDATASIZE];		/*!< distributed transaction
					identifier */
};
/** X/Open XA distributed transaction identifier */
typedef	struct xid_t XID;
#endif
/** X/Open XA distributed transaction status codes */
/* @{ */
#define	XA_OK		0		/*!< normal execution */
#define	XAER_ASYNC	-2		/*!< asynchronous operation already
					outstanding */
#define	XAER_RMERR	-3		/*!< a resource manager error
					occurred in the transaction
					branch */
#define	XAER_NOTA	-4		/*!< the XID is not valid */
#define	XAER_INVAL	-5		/*!< invalid arguments were given */
#define	XAER_PROTO	-6		/*!< routine invoked in an improper
					context */
#define	XAER_RMFAIL	-7		/*!< resource manager unavailable */
#define	XAER_DUPID	-8		/*!< the XID already exists */
#define	XAER_OUTSIDE	-9		/*!< resource manager doing
					work outside transaction */
/* @} */
#endif /* ifndef XA_H */
/*
 * End of xa.h header
 */
