00001
00002
00003
00004
00005
00006 #include "fileClosedir.h"
00007 #include "miscServerFunct.h"
00008 #include "rsGlobalExtern.h"
00009
00010 int
00011 rsFileClosedir (rsComm_t *rsComm, fileClosedirInp_t *fileClosedirInp)
00012 {
00013 rodsServerHost_t *rodsServerHost;
00014 int remoteFlag;
00015 int retVal;
00016
00017 remoteFlag = getServerHostByFileInx (fileClosedirInp->fileInx,
00018 &rodsServerHost);
00019
00020 if (remoteFlag == LOCAL_HOST) {
00021 retVal = _rsFileClosedir (rsComm, fileClosedirInp);
00022 } else if (remoteFlag == REMOTE_HOST) {
00023 retVal = remoteFileClosedir (rsComm, fileClosedirInp, rodsServerHost);
00024 } else {
00025 if (remoteFlag < 0) {
00026 return (remoteFlag);
00027 } else {
00028 rodsLog (LOG_NOTICE,
00029 "rsFileClosedir: resolveHost returned unrecognized value %d",
00030 remoteFlag);
00031 return (SYS_UNRECOGNIZED_REMOTE_FLAG);
00032 }
00033 }
00034
00035
00036
00037 freeFileDesc (fileClosedirInp->fileInx);
00038
00039 return (retVal);
00040 }
00041
00042 int
00043 remoteFileClosedir (rsComm_t *rsComm, fileClosedirInp_t *fileClosedirInp,
00044 rodsServerHost_t *rodsServerHost)
00045 {
00046 int status;
00047
00048 if (rodsServerHost == NULL) {
00049 rodsLog (LOG_NOTICE,
00050 "remoteFileClosedir: Invalid rodsServerHost");
00051 return SYS_INVALID_SERVER_HOST;
00052 }
00053
00054 if ((status = svrToSvrConnect (rsComm, rodsServerHost)) < 0) {
00055 return status;
00056 }
00057
00058
00059 status = rcFileClosedir (rodsServerHost->conn, fileClosedirInp);
00060
00061 if (status < 0) {
00062 rodsLog (LOG_NOTICE,
00063 "remoteFileClosedir: rcFileClosedir failed for %d, status = %d",
00064 fileClosedirInp->fileInx, status);
00065 }
00066
00067 return status;
00068 }
00069
00070 int
00071 _rsFileClosedir (rsComm_t *rsComm, fileClosedirInp_t *fileClosedirInp)
00072 {
00073 int status;
00074
00075 status = fileClosedir (FileDesc[fileClosedirInp->fileInx].fileType,
00076 rsComm, FileDesc[fileClosedirInp->fileInx].driverDep);
00077
00078 if (status < 0) {
00079 rodsLog (LOG_NOTICE,
00080 "_rsFileClosedir: fileClosedir failed for %d, status = %d",
00081 fileClosedirInp->fileInx, status);
00082 return (status);
00083 }
00084
00085 return (status);
00086 }