00001
00002
00003 #include "structFileDriver.h"
00004 #include "subStructFileReaddir.h"
00005 #include "miscServerFunct.h"
00006 #include "dataObjOpr.h"
00007
00008 int
00009 rsSubStructFileReaddir (rsComm_t *rsComm, subStructFileFdOprInp_t *subStructFileReaddirInp,
00010 rodsDirent_t **rodsDirent)
00011 {
00012 rodsServerHost_t *rodsServerHost;
00013 int remoteFlag;
00014 int status;
00015
00016 remoteFlag = resolveHost (&subStructFileReaddirInp->addr, &rodsServerHost);
00017
00018 if (remoteFlag == LOCAL_HOST) {
00019 status = _rsSubStructFileReaddir (rsComm, subStructFileReaddirInp, rodsDirent);
00020 } else if (remoteFlag == REMOTE_HOST) {
00021 status = remoteSubStructFileReaddir (rsComm, subStructFileReaddirInp, rodsDirent,
00022 rodsServerHost);
00023 } else {
00024 if (remoteFlag < 0) {
00025 return (remoteFlag);
00026 } else {
00027 rodsLog (LOG_NOTICE,
00028 "rsSubStructFileReaddir: resolveHost returned unrecognized value %d",
00029 remoteFlag);
00030 return (SYS_UNRECOGNIZED_REMOTE_FLAG);
00031 }
00032 }
00033
00034 return (status);
00035 }
00036
00037 int
00038 remoteSubStructFileReaddir (rsComm_t *rsComm, subStructFileFdOprInp_t *subStructFileReaddirInp,
00039 rodsDirent_t **rodsDirent, rodsServerHost_t *rodsServerHost)
00040 {
00041 int status;
00042
00043 if (rodsServerHost == NULL) {
00044 rodsLog (LOG_NOTICE,
00045 "remoteSubStructFileReaddir: Invalid rodsServerHost");
00046 return SYS_INVALID_SERVER_HOST;
00047 }
00048
00049 if ((status = svrToSvrConnect (rsComm, rodsServerHost)) < 0) {
00050 return status;
00051 }
00052
00053 status = rcSubStructFileReaddir (rodsServerHost->conn, subStructFileReaddirInp,
00054 rodsDirent);
00055
00056 if (status < 0 && status != -1) {
00057 rodsLog (LOG_NOTICE,
00058 "remoteSubStructFileReaddir: rcFileReaddir failed for fd %d",
00059 subStructFileReaddirInp->fd);
00060 }
00061
00062 return status;
00063
00064 }
00065
00066 int
00067 _rsSubStructFileReaddir (rsComm_t *rsComm,
00068 subStructFileFdOprInp_t *subStructFileReaddirInp, rodsDirent_t **rodsDirent)
00069 {
00070 int status;
00071
00072 status = subStructFileReaddir (subStructFileReaddirInp->type, rsComm,
00073 subStructFileReaddirInp->fd, rodsDirent);
00074
00075 if (status < 0 && status != -1) {
00076 rodsLog (LOG_NOTICE,
00077 "_rsSubStructFileReaddir: subStructFileReaddir failed for fd %d",
00078 subStructFileReaddirInp->fd);
00079 }
00080
00081 return (status);
00082 }
00083