00001
00002
00003
00004
00005
00006
00007
00008 #include "unregDataObj.h"
00009 #include "icatHighLevelRoutines.h"
00010 #include "fileDriver.h"
00011
00012 #include "eirods_file_object.h"
00013 #include "eirods_stacktrace.h"
00014
00015 int
00016 rsUnregDataObj (rsComm_t *rsComm, unregDataObj_t *unregDataObjInp)
00017 {
00018 int status;
00019 rodsServerHost_t *rodsServerHost = NULL;
00020 dataObjInfo_t *dataObjInfo;
00021 keyValPair_t *condInput;
00022
00023 condInput = unregDataObjInp->condInput;
00024 dataObjInfo = unregDataObjInp->dataObjInfo;
00025
00026 status = getAndConnRcatHost (rsComm, MASTER_RCAT, dataObjInfo->objPath,
00027 &rodsServerHost);
00028 if (status < 0 || NULL == rodsServerHost) {
00029 return(status);
00030 }
00031 if (rodsServerHost->localFlag == LOCAL_HOST) {
00032 #ifdef RODS_CAT
00033 status = _rsUnregDataObj (rsComm, unregDataObjInp);
00034 #else
00035 status = SYS_NO_RCAT_SERVER_ERR;
00036 #endif
00037 } else {
00038 status = rcUnregDataObj (rodsServerHost->conn, unregDataObjInp);
00039 }
00040
00041 return (status);
00042 }
00043
00044 int
00045 _rsUnregDataObj (rsComm_t *rsComm, unregDataObj_t *unregDataObjInp)
00046 {
00047 #ifdef RODS_CAT
00048 dataObjInfo_t *dataObjInfo;
00049 keyValPair_t *condInput;
00050 int status;
00051 eirods::error ret;
00052
00053 condInput = unregDataObjInp->condInput;
00054 dataObjInfo = unregDataObjInp->dataObjInfo;
00055
00056 status = chlUnregDataObj (rsComm, dataObjInfo, condInput);
00057 if(status < 0) {
00058 char* sys_error;
00059 char* rods_error = rodsErrorName(status, &sys_error);
00060 std::stringstream msg;
00061 msg << __FUNCTION__;
00062 msg << " - Failed to unregister the data object \"";
00063 msg << dataObjInfo->objPath;
00064 msg << "\" - ";
00065 msg << rods_error << " " << sys_error;
00066 ret = ERROR(status, msg.str());
00067 eirods::log(ret);
00068 } else {
00069 eirods::file_object file_obj(rsComm, dataObjInfo);
00070 ret = fileUnregistered(rsComm, file_obj);
00071 if(!ret.ok()) {
00072 std::stringstream msg;
00073 msg << __FUNCTION__;
00074 msg << " - Failed to signal resource that the data object \"";
00075 msg << dataObjInfo->objPath;
00076 msg << "\" was unregistered";
00077 ret = PASSMSG(msg.str(), ret);
00078 eirods::log(ret);
00079 status = ret.code();
00080
00081 if(true) {
00082 eirods::stacktrace st;
00083 st.trace();
00084 st.dump();
00085 }
00086
00087 }
00088 }
00089 return (status);
00090 #else
00091 return (SYS_NO_RCAT_SERVER_ERR);
00092 #endif
00093
00094 }
00095