From b7291dffb959461c796ab652f5fd1250093e6bcc Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Fri, 12 May 2017 14:33:01 +0200 Subject: [PATCH] hdf5 basic works --- slsReceiverSoftware/include/HDF5FileStatic.h | 4 ++-- slsReceiverSoftware/src/HDF5File.cpp | 16 +++++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/slsReceiverSoftware/include/HDF5FileStatic.h b/slsReceiverSoftware/include/HDF5FileStatic.h index 37ead2d5c..941cde601 100644 --- a/slsReceiverSoftware/include/HDF5FileStatic.h +++ b/slsReceiverSoftware/include/HDF5FileStatic.h @@ -355,9 +355,9 @@ public: */ static int CreateDataFile(int ind, bool owenable, string fname, bool frindexenable, uint64_t fnum, uint64_t nDimx, uint32_t nDimy, uint32_t nDimz, - DataType dtype, H5File*& fd, DataSpace* dspace, DataSet* dset, + DataType dtype, H5File*& fd, DataSpace*& dspace, DataSet*& dset, double version, uint64_t maxchunkedimages, - DataSpace* dspace_para, DataSet* dset_para[]) + DataSpace*& dspace_para, DataSet* dset_para[]) { try { Exception::dontPrint(); //to handle errors diff --git a/slsReceiverSoftware/src/HDF5File.cpp b/slsReceiverSoftware/src/HDF5File.cpp index f6e5a0048..40a3f28ec 100644 --- a/slsReceiverSoftware/src/HDF5File.cpp +++ b/slsReceiverSoftware/src/HDF5File.cpp @@ -100,6 +100,8 @@ int HDF5File::CreateFile(uint64_t fnum) { return FAIL; } pthread_mutex_unlock(&Mutex); + if (dataspace == NULL) + cprintf(RED,"Got nothing!\n"); printf("%d HDF5 File: %s\n", index, currentFileName.c_str()); return OK; } @@ -168,18 +170,22 @@ int HDF5File::CreateMasterFile(bool en, uint32_t size, void HDF5File::EndofAcquisition(uint64_t numf) { //not created before if (!virtualfd) { - //create virtual file only if more than 1 file or more than 1 detector(more than 1 file) - if (((numFilesinAcquisition > 1) ||(numDetY*numDetX) > 1)) - CreateVirtualFile(numf); - //link current file in master file - else { + + //only one file and one sub image + if (((numFilesinAcquisition == 1) && (numDetY*numDetX) == 1)) { //dataset name ostringstream osfn; osfn << "/data"; if (*frameIndexEnable) osfn << "_f" << setfill('0') << setw(12) << 0; string dsetname = osfn.str(); + pthread_mutex_lock(&Mutex); HDF5FileStatic::LinkVirtualInMaster(masterFileName, currentFileName, dsetname); + pthread_mutex_unlock(&Mutex); } + + //link current file in master file + else + CreateVirtualFile(numf); } numFilesinAcquisition = 0; }