int l3FileGetSingleBuf (rsComm_t *rsComm, int l1descInx, bytesBuf_t *dataObjOutBBuf) { dataObjInfo_t *dataObjInfo; int rescTypeInx; fileOpenInp_t fileGetInp; int bytesRead; dataObjInp_t *dataObjInp; dataObjInfo = L1desc[l1descInx].dataObjInfo; if (getStructFileType (dataObjInfo->specColl) >= 0) { subFile_t subFile; memset (&subFile, 0, sizeof (subFile)); rstrcpy (subFile.subFilePath, dataObjInfo->subPath, MAX_NAME_LEN); rstrcpy (subFile.addr.hostAddr, dataObjInfo->rescInfo->rescLoc, NAME_LEN); subFile.specColl = dataObjInfo->specColl; subFile.mode = getFileMode (L1desc[l1descInx].dataObjInp); subFile.flags = O_RDONLY; subFile.offset = dataObjInfo->dataSize; bytesRead = rsSubStructFileGet (rsComm, &subFile, dataObjOutBBuf); return (bytesRead); } rescTypeInx = dataObjInfo->rescInfo->rescTypeInx; switch (RescTypeDef[rescTypeInx].rescCat) { case FILE_CAT: memset (&fileGetInp, 0, sizeof (fileGetInp)); dataObjInp = L1desc[l1descInx].dataObjInp; fileGetInp.fileType = (fileDriverType_t)RescTypeDef[rescTypeInx].driverType; rstrcpy (fileGetInp.addr.hostAddr, dataObjInfo->rescInfo->rescLoc, NAME_LEN); rstrcpy (fileGetInp.fileName, dataObjInfo->filePath, MAX_NAME_LEN); fileGetInp.mode = getFileMode (dataObjInp); fileGetInp.flags = O_RDONLY; fileGetInp.dataSize = dataObjInfo->dataSize; /* XXXXX need to be able to handle structured file */ bytesRead = rsFileGet (rsComm, &fileGetInp, dataObjOutBBuf); break; default: rodsLog (LOG_NOTICE, "l3Open: rescCat type %d is not recognized", RescTypeDef[rescTypeInx].rescCat); bytesRead = SYS_INVALID_RESC_TYPE; break; } return (bytesRead); }
int l3FileGetSingleBuf( rsComm_t *rsComm, int l1descInx, bytesBuf_t *dataObjOutBBuf ) { dataObjInfo_t *dataObjInfo; fileOpenInp_t fileGetInp; int bytesRead; dataObjInp_t *dataObjInp; dataObjInfo = L1desc[l1descInx].dataObjInfo; // =-=-=-=-=-=-=- // extract the host location from the resource hierarchy std::string location; irods::error ret = irods::get_loc_for_hier_string( dataObjInfo->rescHier, location ); if ( !ret.ok() ) { irods::log( PASSMSG( "l3FileGetSingleBuf - failed in get_loc_for_hier_String", ret ) ); return -1; } if ( getStructFileType( dataObjInfo->specColl ) >= 0 ) { subFile_t subFile; memset( &subFile, 0, sizeof( subFile ) ); rstrcpy( subFile.subFilePath, dataObjInfo->subPath, MAX_NAME_LEN ); //rstrcpy (subFile.addr.hostAddr, dataObjInfo->rescInfo->rescLoc,NAME_LEN); rstrcpy( subFile.addr.hostAddr, location.c_str(), NAME_LEN ); subFile.specColl = dataObjInfo->specColl; subFile.mode = getFileMode( L1desc[l1descInx].dataObjInp ); subFile.flags = O_RDONLY; subFile.offset = dataObjInfo->dataSize; bytesRead = rsSubStructFileGet( rsComm, &subFile, dataObjOutBBuf ); return bytesRead; } memset( &fileGetInp, 0, sizeof( fileGetInp ) ); dataObjInp = L1desc[l1descInx].dataObjInp; rstrcpy( fileGetInp.addr.hostAddr, location.c_str(), NAME_LEN ); rstrcpy( fileGetInp.fileName, dataObjInfo->filePath, MAX_NAME_LEN ); rstrcpy( fileGetInp.resc_name_, dataObjInfo->rescInfo->rescName, MAX_NAME_LEN ); rstrcpy( fileGetInp.resc_hier_, dataObjInfo->rescHier, MAX_NAME_LEN ); rstrcpy( fileGetInp.objPath, dataObjInfo->objPath, MAX_NAME_LEN ); fileGetInp.mode = getFileMode( dataObjInp ); fileGetInp.flags = O_RDONLY; fileGetInp.dataSize = dataObjInfo->dataSize; /* XXXXX need to be able to handle structured file */ bytesRead = rsFileGet( rsComm, &fileGetInp, dataObjOutBBuf ); return bytesRead; }