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

中间件编程

开发平台:

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 _TXX_H
  19. #define _TXX_H
  20. #include "xa.h"
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. /**
  25.  * Warning this interface is for use by blacktie modules only. Calling methods in this
  26.  * interface will invalidate your warranty
  27.  */
  28. /**
  29.  * suspend/resume Resource Managers whilst there are outstanding xatmi calls
  30.  * @param cd
  31.  *  xatmi call descriptor
  32.  * @param invalidate
  33.  *  callback for invalidating the passed in call descriptor (will only be called
  34.  *  if the client tries to end a transaction whilst the descriptor is still active)
  35.  */
  36. extern BLACKTIE_TX_DLL int txx_resume(int cd);
  37. extern BLACKTIE_TX_DLL int txx_suspend(int cd, int (*invalidate)(int cd));
  38. /**
  39.  * test wether the supplied xatmi call descriptor is transactional
  40.  */
  41. extern BLACKTIE_TX_DLL bool txx_isCdTransactional(int cd);
  42. /**
  43.  * Modify the transaction associated with the target thread such that the only
  44.  * possible outcome of the transaction is to roll back the transaction
  45.  */
  46. extern BLACKTIE_TX_DLL int txx_rollback_only();
  47. /**
  48.  * stop the transaction manager proxy
  49.  */
  50. extern BLACKTIE_TX_DLL void txx_stop(void);
  51. /**
  52.  * Associate a transaction with the current thread:
  53.  * - input parameter 1 is a serialized transaction (ie an IOR)
  54.  * - input parameter 2 is a the time in seconds during which the txn remains alive
  55.  *
  56.  * Return a non-negative value on success
  57.  */
  58. extern BLACKTIE_TX_DLL int txx_associate_serialized(char *, long);
  59. /**
  60.  * Convert the transaction associated with the calling thread into a string.
  61.  * @param ttl
  62.  *  output param holds the remaining time before which the txn is subject to rollback,
  63.  *  a value of -1 indicates that the txn is not subject to timeouts
  64.  *
  65.  * Return a string representation of the txn
  66.  */
  67. extern BLACKTIE_TX_DLL char* txx_serialize(long* ttl);
  68. /**
  69.  * disassociate a transaction from the current thread
  70.  * (also suspends all Resource Managers linked into the running applications)
  71.  * returns the transaction that was previously associated
  72.  *
  73.  * If the request argument rollback is set to true then the transaction is
  74.  * marked rollback only prior to disassociation from the thread
  75.  *
  76.  * Returns the OTS control associated with the current thread. The caller
  77.  * is responsible for calling release_control on the returned value.
  78.  */
  79. extern BLACKTIE_TX_DLL void * txx_unbind(bool rollback);
  80. /**
  81.  * Return the OTS control associated with the current thread
  82.  * The caller is responsible for calling release_control on the
  83.  * returned control.
  84.  */
  85. extern BLACKTIE_TX_DLL void * txx_get_control();
  86. /**
  87.  * Release an OTS control returned by:
  88.  * get_control
  89.  * txx_unbind
  90.  */
  91. extern BLACKTIE_TX_DLL void txx_release_control(void *);
  92. /**
  93.  * Return the time left in seconds before any txn bound to the callers
  94.  * thread becomes eligible for rollback.
  95.  * @param
  96.  *  the time left in seconds. A negative value means it is eligible for
  97.  *  rollback. A value of 0 means 
  98.  * @return
  99.  *  -1 if there in no txn
  100.  *  0 if the ttl param was updated with a valid time to live value
  101.  *  1 if the current txn is not subject to a timeout
  102.  */
  103. extern BLACKTIE_TX_DLL int txx_ttl(long* ttl);
  104. #ifdef __cplusplus
  105. }
  106. #endif
  107. #endif //_TXX_H