00001
00002
00003 #include "structFileDriver.h"
00004 #include "subStructFileOpen.h"
00005 #include "miscServerFunct.h"
00006 #include "dataObjOpr.h"
00007
00008 int
00009 rsSubStructFileOpen (rsComm_t *rsComm, subFile_t *subFile)
00010 {
00011 rodsServerHost_t *rodsServerHost;
00012 int remoteFlag;
00013 int fd;
00014
00015 remoteFlag = resolveHost (&subFile->addr, &rodsServerHost);
00016
00017 if (remoteFlag == LOCAL_HOST) {
00018 fd = _rsSubStructFileOpen (rsComm, subFile);
00019 } else if (remoteFlag == REMOTE_HOST) {
00020 fd = remoteSubStructFileOpen (rsComm, subFile, rodsServerHost);
00021 } else {
00022 if (remoteFlag < 0) {
00023 return (remoteFlag);
00024 } else {
00025 rodsLog (LOG_NOTICE,
00026 "rsSubStructFileOpen: resolveHost returned unrecognized value %d",
00027 remoteFlag);
00028 return (SYS_UNRECOGNIZED_REMOTE_FLAG);
00029 }
00030 }
00031
00032 return (fd);
00033 }
00034
00035 int
00036 remoteSubStructFileOpen (rsComm_t *rsComm, subFile_t *subFile,
00037 rodsServerHost_t *rodsServerHost)
00038 {
00039 int fd;
00040 int status;
00041
00042 if (rodsServerHost == NULL) {
00043 rodsLog (LOG_NOTICE,
00044 "remoteSubStructFileOpen: Invalid rodsServerHost");
00045 return SYS_INVALID_SERVER_HOST;
00046 }
00047
00048 if ((status = svrToSvrConnect (rsComm, rodsServerHost)) < 0) {
00049 return status;
00050 }
00051
00052 fd = rcSubStructFileOpen (rodsServerHost->conn, subFile);
00053
00054 if (fd < 0) {
00055 rodsLog (LOG_NOTICE,
00056 "remoteSubStructFileOpen: rcSubStructFileOpen failed for %s, status = %d",
00057 subFile->subFilePath, fd);
00058 }
00059
00060 return fd;
00061 }
00062
00063 int
00064 _rsSubStructFileOpen (rsComm_t *rsComm, subFile_t *subFile)
00065 {
00066 int fd;
00067
00068 fd = subStructFileOpen (rsComm, subFile);
00069
00070 return (fd);
00071 }
00072
00073