Mercurial > hg > orthanc
diff OrthancServer/DicomProtocol/DicomServer.cpp @ 2381:b8969010b534
uncoupling DCMTK primitives from Orthanc::Configuration
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 29 Aug 2017 19:59:01 +0200 |
parents | 96b3ec054b69 |
children |
line wrap: on
line diff
--- a/OrthancServer/DicomProtocol/DicomServer.cpp Tue Aug 29 16:49:44 2017 +0200 +++ b/OrthancServer/DicomProtocol/DicomServer.cpp Tue Aug 29 19:59:01 2017 +0200 @@ -39,7 +39,6 @@ #include "../../Core/OrthancException.h" #include "../../Core/Toolbox.h" #include "../Internals/CommandDispatcher.h" -#include "../OrthancInitialization.h" #include <boost/thread.hpp> @@ -90,6 +89,7 @@ aet_("ANY-SCP") { port_ = 104; + modalities_ = NULL; findRequestHandlerFactory_ = NULL; moveRequestHandlerFactory_ = NULL; storeRequestHandlerFactory_ = NULL; @@ -179,6 +179,24 @@ return aet_; } + void DicomServer::SetRemoteModalities(IRemoteModalities& modalities) + { + Stop(); + modalities_ = &modalities; + } + + DicomServer::IRemoteModalities& DicomServer::GetRemoteModalities() const + { + if (modalities_ == NULL) + { + throw OrthancException(ErrorCode_BadSequenceOfCalls); + } + else + { + return *modalities_; + } + } + void DicomServer::SetFindRequestHandlerFactory(IFindRequestHandlerFactory& factory) { Stop(); @@ -296,6 +314,12 @@ void DicomServer::Start() { + if (modalities_ == NULL) + { + LOG(ERROR) << "No list of modalities was provided to the DICOM server"; + throw OrthancException(ErrorCode_BadSequenceOfCalls); + } + Stop(); /* initialize network, i.e. create an instance of T_ASC_Network*. */ @@ -339,13 +363,20 @@ bool DicomServer::IsMyAETitle(const std::string& aet) const { + if (modalities_ == NULL) + { + throw OrthancException(ErrorCode_BadSequenceOfCalls); + } + if (!HasCalledApplicationEntityTitleCheck()) { // OK, no check on the AET. return true; } - - return Configuration::IsSameAETitle(aet, GetApplicationEntityTitle()); + else + { + return modalities_->IsSameAETitle(aet, GetApplicationEntityTitle()); + } } }