00001
00002
00003
00004
00005
00006 #include "endTransaction.h"
00007 #include "reGlobalsExtern.h"
00008 #include "icatHighLevelRoutines.h"
00009
00010 int
00011 rsEndTransaction (rsComm_t *rsComm, endTransactionInp_t *endTransactionInp )
00012 {
00013 rodsServerHost_t *rodsServerHost;
00014 int status;
00015
00016 rodsLog(LOG_DEBUG, "endTransaction");
00017
00018 status = getAndConnRcatHost(rsComm, MASTER_RCAT, NULL, &rodsServerHost);
00019 if (status < 0) {
00020 return(status);
00021 }
00022
00023 if (rodsServerHost->localFlag == LOCAL_HOST) {
00024 #ifdef RODS_CAT
00025 status = _rsEndTransaction (rsComm, endTransactionInp);
00026 #else
00027 status = SYS_NO_RCAT_SERVER_ERR;
00028 #endif
00029 }
00030 else {
00031 status = rcEndTransaction(rodsServerHost->conn,
00032 endTransactionInp);
00033 }
00034
00035 if (status < 0) {
00036 rodsLog (LOG_NOTICE,
00037 "rsEndTransaction: rcEndTransaction failed");
00038 }
00039 return (status);
00040 }
00041
00042 #ifdef RODS_CAT
00043 int
00044 _rsEndTransaction(rsComm_t *rsComm, endTransactionInp_t *endTransactionInp )
00045 {
00046 int status;
00047
00048 rodsLog (LOG_DEBUG,
00049 "_rsEndTransaction arg0=%s",
00050 endTransactionInp->arg0);
00051
00052 if (strcmp(endTransactionInp->arg0,"commit")==0) {
00053 status = chlCommit(rsComm);
00054 return(status);
00055 }
00056
00057 if (strcmp(endTransactionInp->arg0,"rollback")==0) {
00058 status = chlRollback(rsComm);
00059 return(status);
00060 }
00061
00062 return(CAT_INVALID_ARGUMENT);
00063 }
00064 #endif