Merge branch 'refactor' of github.com:slsdetectorgroup/slsDetectorPackage into refactor

This commit is contained in:
2018-10-11 14:20:58 +02:00

View File

@ -826,28 +826,18 @@ int slsDetector::receiveModule(sls_detector_module* myMod) {
slsDetectorDefs::detectorType slsDetector::getDetectorTypeFromShm(int multiId, bool verify) { slsDetectorDefs::detectorType slsDetector::getDetectorTypeFromShm(int multiId, bool verify) {
auto shm = SharedMemory(multiId, detId);
detectorType type = GENERIC; if (!shm.IsExisting()) {
SharedMemory* shm = 0;
try {
// create
shm = new SharedMemory(multiId, detId);
// shm not created before
if (!shm->IsExisting()) {
cprintf(RED,"Shared memory %s does not exist.\n" cprintf(RED,"Shared memory %s does not exist.\n"
"Corrupted Multi Shared memory. Please free shared memory.\n", "Corrupted Multi Shared memory. Please free shared memory.\n",
shm->GetName().c_str()); shm.GetName().c_str());
throw SharedMemoryException(); throw SharedMemoryException();
} }
// only basic size of structure (just version is required)
sharedSlsDetector* sdet = 0;
size_t sz = sizeof(sharedSlsDetector); size_t sz = sizeof(sharedSlsDetector);
// open, map, verify version // open, map, verify version
sdet = (sharedSlsDetector*)shm->OpenSharedMemory(sz); auto sdet = (sharedSlsDetector*)shm.OpenSharedMemory(sz);
if (verify && sdet->shmversion != SLS_SHMVERSION) { if (verify && sdet->shmversion != SLS_SHMVERSION) {
cprintf(RED, "Single shared memory (%d-%d:)version mismatch " cprintf(RED, "Single shared memory (%d-%d:)version mismatch "
"(expected 0x%x but got 0x%x)\n", "(expected 0x%x but got 0x%x)\n",
@ -858,16 +848,8 @@ slsDetectorDefs::detectorType slsDetector::getDetectorTypeFromShm(int multiId, b
} }
// get type, unmap // get type, unmap
type = sdet->myDetectorType; auto type = sdet->myDetectorType;
shm->UnmapSharedMemory(sdet); shm.UnmapSharedMemory(sdet);
delete shm;
} catch (...) {
if (shm)
delete shm;
throw;
}
return type; return type;
} }