mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-20 16:48:01 +02:00
Merge branch 'refactor' of github.com:slsdetectorgroup/slsDetectorPackage into refactor
This commit is contained in:
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user