00001
00002
00003 #include "subStructFileRename.h"
00004 #include "miscServerFunct.h"
00005 #include "dataObjOpr.h"
00006
00007
00008
00009 #include "eirods_structured_object.h"
00010
00011
00012 int
00013 rsSubStructFileRename (rsComm_t *rsComm, subStructFileRenameInp_t *subStructFileRenameInp)
00014 {
00015 rodsServerHost_t *rodsServerHost;
00016 int remoteFlag;
00017 int status;
00018
00019 remoteFlag = resolveHost (&subStructFileRenameInp->subFile.addr, &rodsServerHost);
00020
00021 if (remoteFlag == LOCAL_HOST) {
00022 status = _rsSubStructFileRename (rsComm, subStructFileRenameInp);
00023 } else if (remoteFlag == REMOTE_HOST) {
00024 status = remoteSubStructFileRename (rsComm, subStructFileRenameInp, rodsServerHost);
00025 } else {
00026 if (remoteFlag < 0) {
00027 return (remoteFlag);
00028 } else {
00029 rodsLog (LOG_NOTICE,
00030 "rsSubStructFileRename: resolveHost returned unrecognized value %d",
00031 remoteFlag);
00032 return (SYS_UNRECOGNIZED_REMOTE_FLAG);
00033 }
00034 }
00035
00036 return (status);
00037 }
00038
00039 int
00040 remoteSubStructFileRename (rsComm_t *rsComm, subStructFileRenameInp_t *subStructFileRenameInp,
00041 rodsServerHost_t *rodsServerHost)
00042 {
00043 int status;
00044
00045 if (rodsServerHost == NULL) {
00046 rodsLog (LOG_NOTICE,
00047 "remoteSubStructFileRename: Invalid rodsServerHost");
00048 return SYS_INVALID_SERVER_HOST;
00049 }
00050
00051 if ((status = svrToSvrConnect (rsComm, rodsServerHost)) < 0) {
00052 return status;
00053 }
00054
00055 status = rcSubStructFileRename (rodsServerHost->conn, subStructFileRenameInp);
00056
00057 if (status < 0) {
00058 rodsLog (LOG_NOTICE,
00059 "remoteSubStructFileRename: rcSubStructFileRename failed for %s, status = %d",
00060 subStructFileRenameInp->subFile.subFilePath, status);
00061 }
00062
00063 return status;
00064 }
00065
00066 int
00067 _rsSubStructFileRename( rsComm_t* _comm,
00068 subStructFileRenameInp_t* _rename_inp ) {
00069
00070
00071 eirods::structured_object struct_obj( _rename_inp->subFile );
00072 struct_obj.comm( _comm );
00073
00074
00075
00076 eirods::error rename_err = fileRename( _comm, struct_obj, _rename_inp->newSubFilePath );
00077 if( !rename_err.ok() ) {
00078 std::stringstream msg;
00079 msg << "failed on call to fileRename for [";
00080 msg << struct_obj.physical_path();
00081 msg << "]";
00082 eirods::log( PASSMSG( msg.str(), rename_err ) );
00083 return rename_err.code();
00084
00085 } else {
00086 return rename_err.code();
00087
00088 }
00089
00090 }
00091