Mercurial > hg > orthanc-stone
comparison Framework/Loaders/LoaderCache.cpp @ 1413:cde379b9d1d2 loader-cache-refactoring
LoaderCache is now extensible + factored the uuid normalizing
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Mon, 04 May 2020 18:26:35 +0200 |
parents | f4a06ad1580b |
children | 998697c5ec74 |
comparison
equal
deleted
inserted
replaced
1411:08fd094f9582 | 1413:cde379b9d1d2 |
---|---|
51 boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> | 51 boost::shared_ptr<OrthancSeriesVolumeProgressiveLoader> |
52 LoaderCache::GetSeriesVolumeProgressiveLoader(std::string seriesUuid) | 52 LoaderCache::GetSeriesVolumeProgressiveLoader(std::string seriesUuid) |
53 { | 53 { |
54 try | 54 try |
55 { | 55 { |
56 | |
57 // normalize keys a little | 56 // normalize keys a little |
58 seriesUuid = Orthanc::Toolbox::StripSpaces(seriesUuid); | 57 NormalizeUuid(seriesUuid); |
59 Orthanc::Toolbox::ToLowerCase(seriesUuid); | |
60 | 58 |
61 // find in cache | 59 // find in cache |
62 if (seriesVolumeProgressiveLoaders_.find(seriesUuid) == seriesVolumeProgressiveLoaders_.end()) | 60 if (seriesVolumeProgressiveLoaders_.find(seriesUuid) == seriesVolumeProgressiveLoaders_.end()) |
63 { | 61 { |
64 std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext_.Lock()); | 62 std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext_.Lock()); |
102 } | 100 } |
103 } | 101 } |
104 | 102 |
105 boost::shared_ptr<OrthancMultiframeVolumeLoader> LoaderCache::GetMultiframeVolumeLoader(std::string instanceUuid) | 103 boost::shared_ptr<OrthancMultiframeVolumeLoader> LoaderCache::GetMultiframeVolumeLoader(std::string instanceUuid) |
106 { | 104 { |
105 // normalize keys a little | |
106 NormalizeUuid(instanceUuid); | |
107 | |
107 // if the loader is not available, let's trigger its creation | 108 // if the loader is not available, let's trigger its creation |
108 if(multiframeVolumeLoaders_.find(instanceUuid) == multiframeVolumeLoaders_.end()) | 109 if(multiframeVolumeLoaders_.find(instanceUuid) == multiframeVolumeLoaders_.end()) |
109 { | 110 { |
110 GetMultiframeDicomVolumeImageMPRSlicer(instanceUuid); | 111 GetMultiframeDicomVolumeImageMPRSlicer(instanceUuid); |
111 } | 112 } |
117 boost::shared_ptr<OrthancStone::DicomVolumeImageMPRSlicer> LoaderCache::GetMultiframeDicomVolumeImageMPRSlicer(std::string instanceUuid) | 118 boost::shared_ptr<OrthancStone::DicomVolumeImageMPRSlicer> LoaderCache::GetMultiframeDicomVolumeImageMPRSlicer(std::string instanceUuid) |
118 { | 119 { |
119 try | 120 try |
120 { | 121 { |
121 // normalize keys a little | 122 // normalize keys a little |
122 instanceUuid = Orthanc::Toolbox::StripSpaces(instanceUuid); | 123 NormalizeUuid(instanceUuid); |
123 Orthanc::Toolbox::ToLowerCase(instanceUuid); | |
124 | 124 |
125 // find in cache | 125 // find in cache |
126 if (dicomVolumeImageMPRSlicers_.find(instanceUuid) == dicomVolumeImageMPRSlicers_.end()) | 126 if (dicomVolumeImageMPRSlicers_.find(instanceUuid) == dicomVolumeImageMPRSlicers_.end()) |
127 { | 127 { |
128 std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext_.Lock()); | 128 std::unique_ptr<OrthancStone::ILoadersContext::ILock> lock(loadersContext_.Lock()); |
192 const std::vector<std::string>& initiallyVisibleStructures) | 192 const std::vector<std::string>& initiallyVisibleStructures) |
193 { | 193 { |
194 try | 194 try |
195 { | 195 { |
196 // normalize keys a little | 196 // normalize keys a little |
197 inInstanceUuid = Orthanc::Toolbox::StripSpaces(inInstanceUuid); | 197 NormalizeUuid(inInstanceUuid); |
198 Orthanc::Toolbox::ToLowerCase(inInstanceUuid); | |
199 | 198 |
200 std::string initiallyVisibleStructuresKey = | 199 std::string initiallyVisibleStructuresKey = |
201 SortAndJoin(initiallyVisibleStructures); | 200 SortAndJoin(initiallyVisibleStructures); |
202 | 201 |
203 std::string entryKey = inInstanceUuid + "_" + initiallyVisibleStructuresKey; | 202 std::string entryKey = inInstanceUuid + "_" + initiallyVisibleStructuresKey; |
273 DebugDisplayObjRefCountsInMap("seriesVolumeProgressiveLoaders_", seriesVolumeProgressiveLoaders_); | 272 DebugDisplayObjRefCountsInMap("seriesVolumeProgressiveLoaders_", seriesVolumeProgressiveLoaders_); |
274 DebugDisplayObjRefCountsInMap("multiframeVolumeLoaders_", multiframeVolumeLoaders_); | 273 DebugDisplayObjRefCountsInMap("multiframeVolumeLoaders_", multiframeVolumeLoaders_); |
275 DebugDisplayObjRefCountsInMap("dicomVolumeImageMPRSlicers_", dicomVolumeImageMPRSlicers_); | 274 DebugDisplayObjRefCountsInMap("dicomVolumeImageMPRSlicers_", dicomVolumeImageMPRSlicers_); |
276 DebugDisplayObjRefCountsInMap("dicomStructureSetLoaders_", dicomStructureSetLoaders_); | 275 DebugDisplayObjRefCountsInMap("dicomStructureSetLoaders_", dicomStructureSetLoaders_); |
277 } | 276 } |
277 | |
278 /** | |
279 This method could have been called StripSpacesAndChangeToLower but we might want to | |
280 add some UUID validation to the argument | |
281 */ | |
282 void LoaderCache::NormalizeUuid(std::string& uuid) | |
283 { | |
284 std::string temp = Orthanc::Toolbox::StripSpaces(uuid); | |
285 Orthanc::Toolbox::ToLowerCase(temp); | |
286 uuid.swap(temp); | |
287 } | |
278 } | 288 } |