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 }