comparison OrthancServer/OrthancRestApi.cpp @ 526:e318e9d49815 dicom-rt

rt-struct
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 29 Aug 2013 17:33:33 +0200
parents 1b2cdc855bd3
children b82292ba2083
comparison
equal deleted inserted replaced
523:68451838fb2c 526:e318e9d49815
62 62
63 63
64 64
65 namespace Orthanc 65 namespace Orthanc
66 { 66 {
67 // TODO IMPROVE MULTITHREADING
68 // Every call to "ParsedDicomFile" must lock this mutex!!!
69 static boost::mutex cacheMutex_;
70
71
72 // DICOM SCU ---------------------------------------------------------------- 67 // DICOM SCU ----------------------------------------------------------------
73 68
74 static void ConnectToModality(DicomUserConnection& connection, 69 static void ConnectToModality(DicomUserConnection& connection,
75 const std::string& name) 70 const std::string& name)
76 { 71 {
975 970
976 // Raw access to the DICOM tags of an instance ------------------------------ 971 // Raw access to the DICOM tags of an instance ------------------------------
977 972
978 static void GetRawContent(RestApi::GetCall& call) 973 static void GetRawContent(RestApi::GetCall& call)
979 { 974 {
980 boost::mutex::scoped_lock lock(cacheMutex_); 975 RETRIEVE_CONTEXT(call);
981 976 boost::mutex::scoped_lock lock(context.GetDicomFileMutex());
982 RETRIEVE_CONTEXT(call); 977
983 std::string id = call.GetUriComponent("id", ""); 978 std::string id = call.GetUriComponent("id", "");
984 ParsedDicomFile& dicom = context.GetDicomFile(id); 979 ParsedDicomFile& dicom = context.GetDicomFile(id);
985 dicom.SendPathValue(call.GetOutput(), call.GetTrailingUri()); 980 dicom.SendPathValue(call.GetOutput(), call.GetTrailingUri());
986 } 981 }
987 982
1258 static void AnonymizeOrModifyInstance(Removals& removals, 1253 static void AnonymizeOrModifyInstance(Removals& removals,
1259 Replacements& replacements, 1254 Replacements& replacements,
1260 bool removePrivateTags, 1255 bool removePrivateTags,
1261 RestApi::PostCall& call) 1256 RestApi::PostCall& call)
1262 { 1257 {
1263 boost::mutex::scoped_lock lock(cacheMutex_); 1258 RETRIEVE_CONTEXT(call);
1264 RETRIEVE_CONTEXT(call); 1259 boost::mutex::scoped_lock lock(context.GetDicomFileMutex());
1265 1260
1266 std::string id = call.GetUriComponent("id", ""); 1261 std::string id = call.GetUriComponent("id", "");
1267 ParsedDicomFile& dicom = context.GetDicomFile(id); 1262 ParsedDicomFile& dicom = context.GetDicomFile(id);
1268 1263
1269 std::auto_ptr<ParsedDicomFile> modified(dicom.Clone()); 1264 std::auto_ptr<ParsedDicomFile> modified(dicom.Clone());
1336 typedef std::list<std::string> Instances; 1331 typedef std::list<std::string> Instances;
1337 1332
1338 bool isFirst = true; 1333 bool isFirst = true;
1339 Json::Value result(Json::objectValue); 1334 Json::Value result(Json::objectValue);
1340 1335
1341 boost::mutex::scoped_lock lock(cacheMutex_); 1336 RETRIEVE_CONTEXT(call);
1342 RETRIEVE_CONTEXT(call); 1337 boost::mutex::scoped_lock lock(context.GetDicomFileMutex());
1343 1338
1344 Instances instances; 1339 Instances instances;
1345 std::string id = call.GetUriComponent("id", ""); 1340 std::string id = call.GetUriComponent("id", "");
1346 context.GetIndex().GetChildInstances(instances, id); 1341 context.GetIndex().GetChildInstances(instances, id);
1347 1342