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

中间件编程

开发平台:

Java

  1. /*
  2.  * JBoss, Home of Professional Open Source
  3.  * Copyright 2008, 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. /*
  19.  * JBoss, Home of Professional Open Source
  20.  * Copyright 2006, JBoss Inc., and individual contributors as indicated
  21.  * by the @authors tag.  All rights reserved. 
  22.  * See the copyright.txt in the distribution for a full listing 
  23.  * of individual contributors.
  24.  * This copyrighted material is made available to anyone wishing to use,
  25.  * modify, copy, or redistribute it subject to the terms and conditions
  26.  * of the GNU General Public License, v. 2.0.
  27.  * This program is distributed in the hope that it will be useful, but WITHOUT A 
  28.  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
  29.  * PARTICULAR PURPOSE.  See the GNU General Public License for more details.
  30.  * You should have received a copy of the GNU General Public License,
  31.  * v. 2.0 along with this distribution; if not, write to the Free Software
  32.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
  33.  * MA  02110-1301, USA.
  34.  * 
  35.  * (C) 2005-2006,
  36.  * @author JBoss Inc.
  37.  */
  38. /*
  39.  * Copyright (C) 1999-2001 by HP Bluestone Software, Inc. All rights Reserved.
  40.  *
  41.  * HP Arjuna Labs,
  42.  * Newcastle upon Tyne,
  43.  * Tyne and Wear,
  44.  * UK.
  45.  *
  46.  * $Id: CosTransactions.idl 2342 2006-03-30 13:06:17Z nmcl $
  47.  */
  48. #ifndef COSTRANSACTIONS_IDL_
  49. #define COSTRANSACTIONS_IDL_
  50. #ifdef HAVE_JAVAPACKAGE
  51. #include <orb.idl>
  52. #endif
  53. #ifndef NO_PRAGMA_SUPPORT
  54. #pragma prefix "omg.org"
  55. #endif
  56. #ifdef HAVE_JAVAPACKAGE
  57. #pragma javaPackage "org.omg"
  58. #endif
  59. //
  60. // If Draft3 is defined includes most (but not all of the features
  61. // of the revised OTS spec at Draft3 (Nov 22, 96).
  62. // Those missing generally need support from other services or the ORB
  63. // itself
  64. //
  65. /*
  66.  * We provide minimal support for drafts before 3.
  67.  * Because some systems (e.g., Orbix) do their own parsing and
  68.  * can't cope with '#if defined' statements, we have some "extended"
  69.  * conditional compilation lines!
  70.  */
  71. module CosTransactions
  72. {
  73.     enum Status { StatusActive, StatusMarkedRollback, StatusPrepared,
  74.   StatusCommitted, StatusRolledBack, StatusUnknown,
  75.   StatusPreparing, StatusCommitting, StatusRollingBack,
  76.   StatusNoTransaction };
  77.     enum Vote { VoteCommit, VoteRollback, VoteReadOnly };
  78. #ifndef ORB_OTS_SUPPORT
  79.     // Standard exceptions - here until the Orb supports them
  80.     
  81.     exception TransactionRequired {};
  82.     exception TransactionRolledBack {};
  83.     exception InvalidTransaction {};
  84. #endif
  85.     exception WrongTransaction {};
  86.     // Heuristic exceptions
  87.     exception HeuristicRollback {};
  88.     exception HeuristicCommit {};
  89.     exception HeuristicMixed {};
  90.     exception HeuristicHazard {};
  91.     // Other transaction related exceptions
  92.     
  93.     exception SubtransactionsUnavailable {};
  94.     exception NotSubtransaction {};
  95.     exception Inactive {};
  96.     exception NotPrepared {};
  97.     exception NoTransaction {};
  98.     exception InvalidControl {};
  99.     exception Unavailable {};
  100.     exception SynchronizationUnavailable {};
  101.     // Forward references for later interfaces
  102.     interface Control;
  103.     interface Terminator;
  104.     interface Coordinator;
  105.     interface Resource;
  106.     interface RecoveryCoordinator;
  107.     interface SubtransactionAwareResource;
  108.     interface TransactionFactory;
  109.     interface TransactionalObject;
  110.     interface Current;
  111.     interface Synchronization;
  112.     
  113.     // Formally part of CosTSInteroperation
  114. #ifdef NO_ANONYMOUS_SEQUENCES
  115.     typedef sequence<octet> tranID;
  116. #endif
  117.     struct otid_t
  118.     {
  119. long formatID;  /* format identifier. 0 is OSI TP */
  120. long bqual_length;
  121. #ifndef NO_ANONYMOUS_SEQUENCES
  122. sequence <octet> tid;
  123. #else
  124. tranID tid;
  125. #endif
  126.     };
  127.     struct TransIdentity
  128.     {
  129. Coordinator coord;
  130. Terminator term;
  131. otid_t otid;
  132.     };
  133. #ifdef NO_ANONYMOUS_SEQUENCES
  134.     typedef sequence<TransIdentity> hierarchy;
  135. #endif
  136.     struct PropagationContext
  137.     {
  138. unsigned long timeout;
  139. #ifdef LEGAL_IDL
  140. TransIdentity currentTransaction;
  141. #else
  142. TransIdentity current;
  143. #endif
  144. #ifndef NO_ANONYMOUS_SEQUENCES
  145. sequence <TransIdentity> parents;
  146. #else
  147. hierarchy parents;
  148. #endif
  149. any implementation_specific_data;
  150.     };
  151.     
  152. #ifdef ORB_CURRENT_SUPPORT    
  153.     interface Current : CORBA::Current
  154. #else
  155.     interface Current
  156. #endif
  157.     {
  158. void begin () raises (SubtransactionsUnavailable);
  159. void commit (in boolean report_heuristics) raises (NoTransaction, HeuristicMixed, HeuristicHazard);
  160. void rollback () raises (NoTransaction);
  161. void rollback_only () raises (NoTransaction);
  162. Status get_status ();
  163. string get_transaction_name ();
  164. void set_timeout (in unsigned long seconds);
  165. Control get_control ();
  166. Control suspend ();
  167. void resume (in Control which) raises (InvalidControl);
  168.     };
  169.     
  170.     interface TransactionFactory
  171.     {
  172. Control create (in unsigned long time_out);
  173. Control recreate (in PropagationContext ctx);
  174.     };
  175.     interface Control
  176.     {
  177. Terminator get_terminator () raises (Unavailable);
  178. Coordinator get_coordinator () raises (Unavailable);
  179.     };
  180.     interface Terminator
  181.     {
  182. void commit (in boolean report_heuristics) raises (HeuristicMixed, HeuristicHazard);
  183. void rollback ();
  184.     };
  185.     interface Coordinator
  186.     {
  187. Status get_status ();
  188. Status get_parent_status ();
  189. Status get_top_level_status ();
  190.     
  191. boolean is_same_transaction (in Coordinator tc);
  192. boolean is_related_transaction (in Coordinator tc);
  193. boolean is_ancestor_transaction (in Coordinator tc);
  194. boolean is_descendant_transaction (in Coordinator tc);
  195. boolean is_top_level_transaction ();
  196. unsigned long hash_transaction ();
  197. unsigned long hash_top_level_tran ();
  198. RecoveryCoordinator register_resource (in Resource r) raises (Inactive);
  199. void register_synchronization (in Synchronization sync) raises (Inactive, SynchronizationUnavailable);
  200. void register_subtran_aware (in SubtransactionAwareResource r) raises (Inactive, NotSubtransaction);
  201. void rollback_only () raises (Inactive);
  202. string get_transaction_name ();
  203. Control create_subtransaction () raises (SubtransactionsUnavailable, Inactive);
  204. PropagationContext get_txcontext () raises (Unavailable);
  205.     };
  206.     interface RecoveryCoordinator
  207.     {
  208. Status replay_completion (in Resource r) raises (NotPrepared);
  209.     };
  210.     
  211.     interface Resource
  212.     {
  213. Vote prepare () raises (HeuristicMixed, HeuristicHazard);
  214. void rollback () raises (HeuristicCommit, HeuristicMixed, HeuristicHazard);
  215. void commit () raises (NotPrepared, HeuristicRollback, HeuristicMixed, HeuristicHazard);
  216. void commit_one_phase () raises (HeuristicHazard);
  217. void forget ();
  218.     };
  219.     interface SubtransactionAwareResource : Resource
  220.     {
  221. void commit_subtransaction (in Coordinator parent);
  222. void rollback_subtransaction ();
  223.     };
  224.     
  225.     interface TransactionalObject
  226.     {
  227.     };
  228.     interface Synchronization : TransactionalObject
  229.     {
  230. void before_completion ();
  231. void after_completion (in Status s);
  232.     };
  233.     
  234. };
  235. #endif