XAResourceAdaptorImpl.h
上传用户:xfwatch
上传日期:2020-12-14
资源大小:872k
文件大小:3k
源码类别:

中间件编程

开发平台:

Java

  1. /*
  2.  * JBoss, Home of Professional Open Source
  3.  * Copyright 2009, Red Hat, Inc., and others contributors as indicated
  4.  * by the @authors tag. All rights reserved.
  5.  * See the copyright.txt in the distribution for a
  6.  * full listing of individual contributors.
  7.  * This copyrighted material is made available to anyone wishing to use,
  8.  * modify, copy, or redistribute it subject to the terms and conditions
  9.  * of the GNU Lesser General Public License, v. 2.1.
  10.  * This program is distributed in the hope that it will be useful, but WITHOUT A
  11.  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  12.  * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
  13.  * You should have received a copy of the GNU Lesser General Public License,
  14.  * v.2.1 along with this distribution; if not, write to the Free Software
  15.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  16.  * MA  02110-1301, USA.
  17.  */
  18. #ifndef _XARESOURCEADAPTORIMPL_H
  19. #define _XARESOURCEADAPTORIMPL_H
  20. #include "SynchronizableObject.h"
  21. #include "XARecoveryLog.h"
  22. #include "XAStateModel.h"
  23. #include "txi.h"
  24. #include <map>
  25. #include <tao/PortableServer/PortableServer.h>
  26. #include "CosTransactionsS.h"
  27. #include "XAResourceManager.h"
  28. using namespace CosTransactions;
  29. class XAResourceManager;
  30. class BLACKTIE_TX_DLL XAResourceAdaptorImpl :
  31. public virtual POA_CosTransactions::Resource, public virtual PortableServer::RefCountServantBase
  32. {
  33. public:
  34. XAResourceAdaptorImpl(XAResourceManager*, XID&, XID&, CORBA::Long, struct xa_switch_t *, XARecoveryLog&) throw (RMException);
  35. virtual ~XAResourceAdaptorImpl();
  36. // OTS resource methods
  37. Vote prepare() throw (HeuristicMixed,HeuristicHazard);
  38. void rollback() throw(HeuristicCommit,HeuristicMixed,HeuristicHazard);
  39. void commit() throw(NotPrepared,HeuristicRollback,HeuristicMixed,HeuristicHazard);
  40. void commit_one_phase() throw(HeuristicHazard);
  41. void forget();
  42. bool is_complete(); // has this resource finished 2PC - need for testing
  43. void set_recovery_coordinator(char *rc) {rc_ = rc;}
  44. int xa_start (long);
  45. int xa_end (long);
  46. private:
  47. XAResourceManager * rm_;
  48. XID xid_;
  49. XID bid_;
  50. bool complete_;
  51. CORBA::Long rmid_;
  52. struct xa_switch_t * xa_switch_;
  53. char *rc_;
  54. int flags_;
  55. long eflags_;
  56. int tightly_coupled_;
  57. atmibroker::xa::XAStateModel sm_;
  58. XARecoveryLog& rclog_;
  59. bool prepared_;
  60. void terminate(int) throw(
  61. HeuristicRollback,
  62. HeuristicMixed,
  63. HeuristicHazard);
  64. int set_flags(int flags);
  65. void set_complete();
  66. void notify_error(int, bool);
  67. // XA methods
  68. int xa_rollback (long);
  69. int xa_prepare (long);
  70. int xa_commit (long);
  71. int xa_recover (long, long);
  72. int xa_forget (long);
  73. int xa_complete (int *, int *, long);
  74. };
  75. #endif // _XARESOURCEADAPTORIMPL_H