diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 2ec5a200a..ba89e75ee 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -78,13 +78,8 @@ template std::vector multiSlsDetector::serialCall(RT (slsDetector::*somefunc)(CT...), CT... Args) { std::vector result; - for (auto& d: detectors) { + for (auto& d: detectors) result.push_back((d.get()->*somefunc)(Args...)); - /* - if ((*this)[idet]->getErrorMask()) - setErrorMask(getErrorMask() | (1 << idet)); - */ - } return result; } @@ -92,17 +87,11 @@ template std::vector multiSlsDetector::parallelCall(RT (slsDetector::*somefunc)(CT...), CT... Args) { std::vector> futures; - for (auto &d : detectors) { + for (auto &d : detectors) futures.push_back(std::async(std::launch::async, somefunc, d.get(), Args...)); - /* - if ((*this)[idet]->getErrorMask()) - setErrorMask(getErrorMask() | (1 << idet)); - */ - } std::vector result; for (auto& i : futures) result.push_back(i.get()); - return result; } @@ -290,23 +279,22 @@ int64_t multiSlsDetector::getId(idMode mode, int detPos) { } -slsDetector* multiSlsDetector::getSlsDetector(int detPos) { - return detectors[detPos].get(); -} +// slsDetector* multiSlsDetector::getSlsDetector(int detPos) { +// return detectors[detPos].get(); +// } +// slsDetector *multiSlsDetector::operator()(int detPos) const { +// return detectors[detPos].get(); +// } -slsDetector *multiSlsDetector::operator()(int detPos) const { - return detectors[detPos].get(); -} - -slsDetector* multiSlsDetector::operator[](int detPos) const { - //Providing access to detectors with range checking - //throw exception if out of range - if (detPos >= 0 && detPos < (int)detectors.size()) - return detectors[detPos].get(); - else - throw(std::range_error("Detector does not exist")); -} +// slsDetector* multiSlsDetector::operator[](int detPos) const { +// //Providing access to detectors with range checking +// //throw exception if out of range +// if (detPos >= 0 && detPos < (int)detectors.size()) +// return detectors[detPos].get(); +// else +// throw(std::range_error("Detector does not exist")); +// } void multiSlsDetector::freeSharedMemory(int multiId, int detPos) { // single @@ -318,22 +306,20 @@ void multiSlsDetector::freeSharedMemory(int multiId, int detPos) { // multi // get number of detectors int numDetectors = 0; - SharedMemory* shm = new SharedMemory(multiId, -1); + auto shm = SharedMemory(multiId, -1); // get number of detectors from multi shm - if (shm->IsExisting()) { - sharedMultiSlsDetector* mdet = (sharedMultiSlsDetector*)shm->OpenSharedMemory( + if (shm.IsExisting()) { + sharedMultiSlsDetector* mdet = (sharedMultiSlsDetector*)shm.OpenSharedMemory( sizeof(sharedMultiSlsDetector)); numDetectors = mdet->numberOfDetectors; - shm->UnmapSharedMemory(mdet); - shm->RemoveSharedMemory(); + shm.UnmapSharedMemory(mdet); + shm.RemoveSharedMemory(); } - delete shm; for (int i = 0; i < numDetectors; ++i) { - SharedMemory* shm = new SharedMemory(multiId, i); - shm->RemoveSharedMemory(); - delete shm; + auto shm = SharedMemory(multiId, i); + shm.RemoveSharedMemory(); } } diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h index 091023eb9..e4255fe86 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.h @@ -237,16 +237,16 @@ public: * @param detPos -1 for all detectors in list or specific detector position * @returns pointer to sls detector object */ - slsDetector* getSlsDetector(int detPos = -1); + // slsDetector* getSlsDetector(int detPos = -1); /** * Accessing the sls detector from the multi list using position * @param detPos -1 for all detectors in list or specific detector position * @returns slsDetector object */ - slsDetector *operator()(int detPos = -1) const; + // slsDetector *operator()(int detPos = -1) const; - slsDetector* operator[](int detPos) const; + // slsDetector* operator[](int detPos) const; /** * Free shared memory from the command line * avoiding creating the constructor classes and mapping