Mercurial > hg > orthanc
changeset 773:3bd0589af992
refactoring
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 30 Apr 2014 15:08:51 +0200 |
parents | 31cc399c7762 |
children | 4e3593c3511d |
files | OrthancServer/DicomProtocol/ReusableDicomUserConnection.cpp OrthancServer/OrthancInitialization.cpp OrthancServer/OrthancInitialization.h OrthancServer/OrthancRestApi/OrthancRestModalities.cpp |
diffstat | 4 files changed, 38 insertions(+), 51 deletions(-) [+] |
line wrap: on
line diff
--- a/OrthancServer/DicomProtocol/ReusableDicomUserConnection.cpp Wed Apr 30 14:51:43 2014 +0200 +++ b/OrthancServer/DicomProtocol/ReusableDicomUserConnection.cpp Wed Apr 30 15:08:51 2014 +0200 @@ -55,6 +55,7 @@ connection_->GetDistantManufacturer() == manufacturer) { // The current connection can be reused + LOG(INFO) << "Reusing the previous SCU connection"; return; } @@ -92,7 +93,7 @@ { boost::mutex::scoped_lock lock(that->mutex_); if (that->connection_ != NULL && - Now() > that->lastUse_ + that->timeBeforeClose_) + Now() >= that->lastUse_ + that->timeBeforeClose_) { LOG(INFO) << "Closing the global SCU connection after timeout"; that->Close();
--- a/OrthancServer/OrthancInitialization.cpp Wed Apr 30 14:51:43 2014 +0200 +++ b/OrthancServer/OrthancInitialization.cpp Wed Apr 30 15:08:51 2014 +0200 @@ -508,25 +508,6 @@ } - void ConnectToModalityUsingSymbolicName(DicomUserConnection& connection, - const std::string& name) - { - std::string aet, address; - int port; - ModalityManufacturer manufacturer; - GetDicomModalityUsingSymbolicName(name, aet, address, port, manufacturer); - - LOG(WARNING) << "Connecting to remote DICOM modality: AET=" << aet << ", address=" << address << ", port=" << port; - - connection.SetLocalApplicationEntityTitle(GetGlobalStringParameter("DicomAet", "ORTHANC")); - connection.SetDistantApplicationEntityTitle(aet); - connection.SetDistantHost(address); - connection.SetDistantPort(port); - connection.SetDistantManufacturer(manufacturer); - connection.Open(); - } - - bool IsSameAETitle(const std::string& aet1, const std::string& aet2) { @@ -587,7 +568,6 @@ } - RemoteModalityParameters GetModalityUsingSymbolicName(const std::string& name) { std::string aet, address; @@ -599,6 +579,7 @@ return RemoteModalityParameters(name, aet, address, port, manufacturer); } + RemoteModalityParameters GetModalityUsingAet(const std::string& aet) { std::string name, address; @@ -613,6 +594,5 @@ { throw OrthancException("Unknown modality for AET: " + aet); } - } }
--- a/OrthancServer/OrthancInitialization.h Wed Apr 30 14:51:43 2014 +0200 +++ b/OrthancServer/OrthancInitialization.h Wed Apr 30 15:08:51 2014 +0200 @@ -37,7 +37,7 @@ #include <json/json.h> #include <stdint.h> #include "../Core/HttpServer/MongooseServer.h" -#include "DicomProtocol/DicomUserConnection.h" +#include "DicomProtocol/RemoteModalityParameters.h" #include "ServerEnumerations.h" namespace Orthanc @@ -86,9 +86,6 @@ void GetGlobalListOfStringsParameter(std::list<std::string>& target, const std::string& key); - void ConnectToModalityUsingSymbolicName(DicomUserConnection& connection, - const std::string& name); - bool IsKnownAETitle(const std::string& aet); bool IsSameAETitle(const std::string& aet1,
--- a/OrthancServer/OrthancRestApi/OrthancRestModalities.cpp Wed Apr 30 14:51:43 2014 +0200 +++ b/OrthancServer/OrthancRestApi/OrthancRestModalities.cpp Wed Apr 30 15:08:51 2014 +0200 @@ -32,7 +32,6 @@ #include "OrthancRestApi.h" -#include "../DicomProtocol/DicomUserConnection.h" #include "../OrthancInitialization.h" #include "../../Core/HttpClient.h" @@ -66,6 +65,8 @@ static void DicomFindPatient(RestApi::PostCall& call) { + ServerContext& context = OrthancRestApi::GetContext(call); + DicomMap m; DicomMap::SetupFindPatientTemplate(m); if (!MergeQueryAndTemplate(m, call.GetPostBody())) @@ -73,11 +74,11 @@ return; } - DicomUserConnection connection; - ConnectToModalityUsingSymbolicName(connection, call.GetUriComponent("id", "")); + RemoteModalityParameters remote = GetModalityUsingSymbolicName(call.GetUriComponent("id", "")); + ReusableDicomUserConnection::Connection connection(context.GetReusableDicomUserConnection(), remote); DicomFindAnswers answers; - connection.FindPatient(answers, m); + connection.GetConnection().FindPatient(answers, m); Json::Value result; answers.ToJson(result); @@ -86,6 +87,8 @@ static void DicomFindStudy(RestApi::PostCall& call) { + ServerContext& context = OrthancRestApi::GetContext(call); + DicomMap m; DicomMap::SetupFindStudyTemplate(m); if (!MergeQueryAndTemplate(m, call.GetPostBody())) @@ -99,11 +102,11 @@ return; } - DicomUserConnection connection; - ConnectToModalityUsingSymbolicName(connection, call.GetUriComponent("id", "")); - + RemoteModalityParameters remote = GetModalityUsingSymbolicName(call.GetUriComponent("id", "")); + ReusableDicomUserConnection::Connection connection(context.GetReusableDicomUserConnection(), remote); + DicomFindAnswers answers; - connection.FindStudy(answers, m); + connection.GetConnection().FindStudy(answers, m); Json::Value result; answers.ToJson(result); @@ -112,6 +115,8 @@ static void DicomFindSeries(RestApi::PostCall& call) { + ServerContext& context = OrthancRestApi::GetContext(call); + DicomMap m; DicomMap::SetupFindSeriesTemplate(m); if (!MergeQueryAndTemplate(m, call.GetPostBody())) @@ -126,11 +131,11 @@ return; } - DicomUserConnection connection; - ConnectToModalityUsingSymbolicName(connection, call.GetUriComponent("id", "")); - + RemoteModalityParameters remote = GetModalityUsingSymbolicName(call.GetUriComponent("id", "")); + ReusableDicomUserConnection::Connection connection(context.GetReusableDicomUserConnection(), remote); + DicomFindAnswers answers; - connection.FindSeries(answers, m); + connection.GetConnection().FindSeries(answers, m); Json::Value result; answers.ToJson(result); @@ -139,6 +144,8 @@ static void DicomFindInstance(RestApi::PostCall& call) { + ServerContext& context = OrthancRestApi::GetContext(call); + DicomMap m; DicomMap::SetupFindInstanceTemplate(m); if (!MergeQueryAndTemplate(m, call.GetPostBody())) @@ -154,11 +161,11 @@ return; } - DicomUserConnection connection; - ConnectToModalityUsingSymbolicName(connection, call.GetUriComponent("id", "")); - + RemoteModalityParameters remote = GetModalityUsingSymbolicName(call.GetUriComponent("id", "")); + ReusableDicomUserConnection::Connection connection(context.GetReusableDicomUserConnection(), remote); + DicomFindAnswers answers; - connection.FindInstance(answers, m); + connection.GetConnection().FindInstance(answers, m); Json::Value result; answers.ToJson(result); @@ -167,6 +174,8 @@ static void DicomFind(RestApi::PostCall& call) { + ServerContext& context = OrthancRestApi::GetContext(call); + DicomMap m; DicomMap::SetupFindPatientTemplate(m); if (!MergeQueryAndTemplate(m, call.GetPostBody())) @@ -174,11 +183,11 @@ return; } - DicomUserConnection connection; - ConnectToModalityUsingSymbolicName(connection, call.GetUriComponent("id", "")); - + RemoteModalityParameters remote = GetModalityUsingSymbolicName(call.GetUriComponent("id", "")); + ReusableDicomUserConnection::Connection connection(context.GetReusableDicomUserConnection(), remote); + DicomFindAnswers patients; - connection.FindPatient(patients, m); + connection.GetConnection().FindPatient(patients, m); // Loop over the found patients Json::Value result = Json::arrayValue; @@ -195,7 +204,7 @@ m.CopyTagIfExists(patients.GetAnswer(i), DICOM_TAG_PATIENT_ID); DicomFindAnswers studies; - connection.FindStudy(studies, m); + connection.GetConnection().FindStudy(studies, m); patient["Studies"] = Json::arrayValue; @@ -214,7 +223,7 @@ m.CopyTagIfExists(studies.GetAnswer(j), DICOM_TAG_STUDY_INSTANCE_UID); DicomFindAnswers series; - connection.FindSeries(series, m); + connection.GetConnection().FindSeries(series, m); // Loop over the found series study["Series"] = Json::arrayValue; @@ -309,8 +318,8 @@ return; } - DicomUserConnection connection; - ConnectToModalityUsingSymbolicName(connection, remote); + RemoteModalityParameters p = GetModalityUsingSymbolicName(remote); + ReusableDicomUserConnection::Connection connection(context.GetReusableDicomUserConnection(), p); for (std::list<std::string>::const_iterator it = instances.begin(); it != instances.end(); ++it) @@ -319,7 +328,7 @@ std::string dicom; context.ReadFile(dicom, *it, FileContentType_Dicom); - connection.Store(dicom); + connection.GetConnection().Store(dicom); } call.GetOutput().AnswerBuffer("{}", "application/json");