00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _CMS_XARESOURCE_H_
00019 #define _CMS_XARESOURCE_H_
00020
00021 #include <cms/Config.h>
00022
00023 #include <cms/Xid.h>
00024 #include <cms/XAException.h>
00025
00026 namespace cms {
00027
00044 class CMS_API XAResource {
00045 public:
00046
00050 static const int TMENDRSCAN;
00051
00056 static const int TMFAIL;
00057
00062 static const int TMJOIN;
00063
00067 static const int TMNOFLAGS;
00068
00072 static const int TMONEPHASE;
00073
00078 static const int TMRESUME;
00079
00083 static const int TMSTARTRSCAN;
00084
00088 static const int TMSUCCESS;
00089
00094 static const int TMSUSPEND;
00095
00100 static const int XA_RDONLY;
00101
00105 static const int XA_OK;
00106
00107 public:
00108
00109 virtual ~XAResource();
00110
00132 virtual void commit(const Xid* xid, bool onePhase) = 0;
00133
00164 virtual void end(const Xid* xid, int flags) = 0;
00165
00178 virtual void forget(const Xid* xid) = 0;
00179
00190 virtual int getTransactionTimeout() const = 0;
00191
00204 virtual bool isSameRM(const XAResource* theXAResource) = 0;
00205
00224 virtual int prepare(const Xid* xid) = 0;
00225
00245 virtual int recover(int flag, Xid** recovered) = 0;
00246
00256 virtual void rollback(const Xid* xid) = 0;
00257
00272 virtual bool setTransactionTimeout(int seconds) = 0;
00273
00299 virtual void start(const Xid* xid, int flags) = 0;
00300
00301 };
00302
00303 }
00304
00305 #endif