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
00022 dataObjInfo = unregDataObjInp->dataObjInfo;
00023
00024 status = getAndConnRcatHost (rsComm, MASTER_RCAT, dataObjInfo->objPath,
00025 &rodsServerHost);
00026 if (status < 0 || NULL == rodsServerHost) {
00027 return(status);
00028 }
00029 if (rodsServerHost->localFlag == LOCAL_HOST) {
00030 #ifdef RODS_CAT
00031 status = _rsUnregDataObj (rsComm, unregDataObjInp);
00032 #else
00033 status = SYS_NO_RCAT_SERVER_ERR;
00034 #endif
00035 } else {
00036 status = rcUnregDataObj (rodsServerHost->conn, unregDataObjInp);
00037 }
00038
00039 return (status);
00040 }
00041
00042 int
00043 _rsUnregDataObj (rsComm_t *rsComm, unregDataObj_t *unregDataObjInp)
00044 {
00045 #ifdef RODS_CAT
00046 dataObjInfo_t *dataObjInfo;
00047 keyValPair_t *condInput;
00048 int status;
00049 eirods::error ret;
00050
00051 condInput = unregDataObjInp->condInput;
00052 dataObjInfo = unregDataObjInp->dataObjInfo;
00053
00054 status = chlUnregDataObj (rsComm, dataObjInfo, condInput);
00055 if(status < 0) {
00056 char* sys_error;
00057 char* rods_error = rodsErrorName(status, &sys_error);
00058 std::stringstream msg;
00059 msg << __FUNCTION__;
00060 msg << " - Failed to unregister the data object \"";
00061 msg << dataObjInfo->objPath;
00062 msg << "\" - ";
00063 msg << rods_error << " " << sys_error;
00064 ret = ERROR(status, msg.str());
00065 eirods::log(ret);
00066 } else {
00067 eirods::file_object_ptr file_obj(
00068 new eirods::file_object(
00069 rsComm,
00070 dataObjInfo ) );
00071 ret = fileUnregistered(rsComm, file_obj);
00072 if(!ret.ok()) {
00073 std::stringstream msg;
00074 msg << __FUNCTION__;
00075 msg << " - Failed to signal resource that the data object \"";
00076 msg << dataObjInfo->objPath;
00077 msg << "\" was unregistered";
00078 ret = PASSMSG(msg.str(), ret);
00079 eirods::log(ret);
00080 status = ret.code();
00081 }
00082 }
00083 return (status);
00084 #else
00085 return (SYS_NO_RCAT_SERVER_ERR);
00086 #endif
00087
00088 }
00089