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