00001
00002
00003
00004
00005
00006 #include "databaseRescOpen.h"
00007 #include "resource.h"
00008 #include "miscServerFunct.h"
00009 #include "dboHighLevelRoutines.h"
00010 int
00011 remoteDatabaseRescOpen(rsComm_t *rsComm,
00012 databaseRescOpenInp_t *databaseRescOpenInp,
00013 rodsServerHost_t *rodsServerHost) {
00014 int status;
00015
00016 if (rodsServerHost == NULL) {
00017 rodsLog (LOG_NOTICE,
00018 "remoteDatabaseOpen: Invalid rodsServerHost");
00019 return SYS_INVALID_SERVER_HOST;
00020 }
00021
00022 if ((status = svrToSvrConnect (rsComm, rodsServerHost)) < 0) {
00023 return status;
00024 }
00025
00026 status = rcDatabaseRescOpen(rodsServerHost->conn,
00027 databaseRescOpenInp);
00028 return status;
00029 }
00030
00031 int
00032 rsDatabaseRescOpen (rsComm_t *rsComm, databaseRescOpenInp_t *databaseRescOpenInp)
00033 {
00034 rodsServerHost_t *rodsServerHost;
00035 int status;
00036 int remoteFlag;
00037 rodsHostAddr_t rescAddr;
00038 rescGrpInfo_t *rescGrpInfo = NULL;
00039
00040 status = _getRescInfo (rsComm, databaseRescOpenInp->dbrName, &rescGrpInfo);
00041 if (status < 0 || NULL == rescGrpInfo ) {
00042 rodsLog (LOG_ERROR,
00043 "rsDatabaseRescOpen: _getRescInfo of %s error, stat = %d",
00044 databaseRescOpenInp->dbrName, status);
00045 return status;
00046 }
00047
00048 bzero (&rescAddr, sizeof (rescAddr));
00049 rstrcpy (rescAddr.hostAddr, rescGrpInfo->rescInfo->rescLoc, NAME_LEN);
00050 remoteFlag = resolveHost (&rescAddr, &rodsServerHost);
00051
00052 if (remoteFlag == LOCAL_HOST) {
00053 status = _rsDatabaseRescOpen(rsComm, databaseRescOpenInp);
00054 } else if (remoteFlag == REMOTE_HOST) {
00055 status = remoteDatabaseRescOpen(rsComm,
00056 databaseRescOpenInp,
00057 rodsServerHost );
00058 } else if (remoteFlag < 0) {
00059 status = remoteFlag;
00060 }
00061
00062 if (status < 0 ) {
00063 rodsLog (LOG_NOTICE,
00064 "rsDatabaseRescOpen: rcDatabaseRescOpen failed, status = %d",
00065 status);
00066 }
00067 return (status);
00068 }
00069
00070 int
00071 _rsDatabaseRescOpen (rsComm_t *rsComm, databaseRescOpenInp_t *databaseRescOpenInp)
00072 {
00073
00074 #ifdef DBR
00075 int status;
00076 status = dbrOpen(databaseRescOpenInp->dbrName);
00077 if (status < 0 ) {
00078 rodsLog (LOG_NOTICE,
00079 "_rsDatabaseRescOpen: databaseRescOpen for %s, status = %d",
00080 databaseRescOpenInp->dbrName, status);
00081 }
00082 return (status);
00083 #else
00084 return(DBR_NOT_COMPILED_IN);
00085 #endif
00086 }
00087