TxAvoid.cxx
上传用户: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. #include "txAvoid.h"
  19. #include "txManagerAvoid.h"
  20. #include "tx.h"
  21. #include "log4cxx/logger.h"
  22. // Logger for txAvoid
  23. log4cxx::LoggerPtr loggerTxAvoid(log4cxx::Logger::getLogger("TX_AVOID"));
  24. void updateInfo(void *infoVoid, long whenReturn, long controlMode, long timeout, long status)
  25. {
  26. TXINFO* info = (TXINFO*) infoVoid;
  27. (info->xid).formatID = -1L; // means the XID is null
  28. info->when_return = whenReturn;
  29. info->transaction_control = controlMode;
  30. /*
  31.  * the timeout that will be used when this process begins the next transaction
  32.  * (it is not neccessarily the timeout for the current transaction since
  33.  * this may have been set in another process or it may have been changed by
  34.  * this process after the current transaction was started).
  35.  */
  36. info->transaction_timeout = timeout;
  37. info->transaction_state = status;
  38.     LOG4CXX_DEBUG(loggerTxAvoid, (char*) "info status=" << info->transaction_state);
  39. }
  40. extern XID& getXid(void *infoVoid) {
  41. TXINFO* info = (TXINFO*) infoVoid;
  42. return info->xid;
  43. }
  44. /* X/Open tx interface */
  45. int tx_open(void) {
  46.     LOG4CXX_DEBUG(loggerTxAvoid, "tx_open: ENTER");
  47.     return txManager_open();
  48. }
  49. int tx_begin(void) {
  50.     LOG4CXX_DEBUG(loggerTxAvoid, "tx_begin: ENTER");
  51.     return txManager_begin();
  52. }
  53. int tx_commit(void) {
  54.     LOG4CXX_DEBUG(loggerTxAvoid, "tx_commit: ENTER");
  55.     return txManager_commit();
  56. }
  57. int tx_rollback(void) {
  58.     LOG4CXX_DEBUG(loggerTxAvoid, "tx_rollback: ENTER");
  59.     return txManager_rollback();
  60. }
  61. int tx_close(void) {
  62.     LOG4CXX_DEBUG(loggerTxAvoid, "tx_close: ENTER");
  63.     return txManager_close();
  64. }
  65. int tx_set_commit_return(COMMIT_RETURN when_return) {
  66.     LOG4CXX_DEBUG(loggerTxAvoid, "tx_set_commit_return: ENTER");
  67.     return txManager_set_commit_return(when_return);
  68. }
  69. int tx_set_transaction_control(TRANSACTION_CONTROL control) {
  70.     LOG4CXX_DEBUG(loggerTxAvoid, "tx_set_transaction_control: ENTER");
  71.     return txManager_set_transaction_control(control);
  72. }
  73. int tx_set_transaction_timeout(TRANSACTION_TIMEOUT timeout) {
  74.     LOG4CXX_DEBUG(loggerTxAvoid, "tx_set_transaction_timeout: ENTER");
  75.     return txManager_set_transaction_timeout(timeout);
  76. }
  77. int tx_info(TXINFO *info) {
  78.     LOG4CXX_DEBUG(loggerTxAvoid, "tx_info: ENTER");
  79.     return txManager_info(info);
  80. }