# HG changeset patch # User Sebastien Jodogne # Date 1382693282 -7200 # Node ID a24b0161b1719c98f009b1e371e863a8a0b0511f # Parent dbecea588ef57eb1bad71b1a4fa67bda0cae10cf lookup using aet diff -r dbecea588ef5 -r a24b0161b171 OrthancServer/OrthancInitialization.cpp --- a/OrthancServer/OrthancInitialization.cpp Fri Oct 25 11:06:10 2013 +0200 +++ b/OrthancServer/OrthancInitialization.cpp Fri Oct 25 11:28:02 2013 +0200 @@ -227,11 +227,11 @@ - void GetDicomModality(const std::string& name, - std::string& aet, - std::string& address, - int& port, - ModalityManufacturer& manufacturer) + void GetDicomModalityUsingSymbolicName(const std::string& name, + std::string& aet, + std::string& address, + int& port, + ModalityManufacturer& manufacturer) { boost::mutex::scoped_lock lock(globalMutex_); @@ -472,7 +472,7 @@ std::string aet, address; int port; ModalityManufacturer manufacturer; - GetDicomModality(name, aet, address, port, manufacturer); + GetDicomModalityUsingSymbolicName(name, aet, address, port, manufacturer); LOG(WARNING) << "Connecting to remote DICOM modality: AET=" << aet << ", address=" << address << ", port=" << port; @@ -485,29 +485,26 @@ } - void ConnectToModalityUsingAETitle(DicomUserConnection& connection, - const std::string& aet) + bool LookupDicomModalityUsingAETitle(const std::string& aet, + std::string& symbolicName, + std::string& address, + int& port, + ModalityManufacturer& manufacturer) { std::set modalities; GetListOfDicomModalities(modalities); - std::string address; - int port; - ModalityManufacturer manufacturer; - bool found = false; - for (std::set::const_iterator it = modalities.begin(); it != modalities.end(); it++) { try { std::string thisAet; - GetDicomModality(*it, thisAet, address, port, manufacturer); + GetDicomModalityUsingSymbolicName(*it, thisAet, address, port, manufacturer); if (aet == thisAet) { - found = true; - break; + return true; } } catch (OrthancException&) @@ -515,7 +512,28 @@ } } - if (!found) + return false; + } + + + bool IsKnownAETitle(const std::string& aet) + { + std::string symbolicName, address; + int port; + ModalityManufacturer manufacturer; + + return LookupDicomModalityUsingAETitle(aet, symbolicName, address, port, manufacturer); + } + + + void ConnectToModalityUsingAETitle(DicomUserConnection& connection, + const std::string& aet) + { + std::string symbolicName, address; + int port; + ModalityManufacturer manufacturer; + + if (!LookupDicomModalityUsingAETitle(aet, symbolicName, address, port, manufacturer)) { throw OrthancException("Unknown modality: " + aet); } diff -r dbecea588ef5 -r a24b0161b171 OrthancServer/OrthancInitialization.h --- a/OrthancServer/OrthancInitialization.h Fri Oct 25 11:06:10 2013 +0200 +++ b/OrthancServer/OrthancInitialization.h Fri Oct 25 11:28:02 2013 +0200 @@ -55,11 +55,17 @@ bool GetGlobalBoolParameter(const std::string& parameter, bool defaultValue); - void GetDicomModality(const std::string& name, - std::string& aet, - std::string& address, - int& port, - ModalityManufacturer& manufacturer); + void GetDicomModalityUsingSymbolicName(const std::string& name, + std::string& aet, + std::string& address, + int& port, + ModalityManufacturer& manufacturer); + + bool LookupDicomModalityUsingAETitle(const std::string& aet, + std::string& symbolicName, + std::string& address, + int& port, + ModalityManufacturer& manufacturer); void GetOrthancPeer(const std::string& name, std::string& url, @@ -85,4 +91,6 @@ void ConnectToModalityUsingAETitle(DicomUserConnection& connection, const std::string& aet); + + bool IsKnownAETitle(const std::string& aet); }