# HG changeset patch # User Sebastien Jodogne # Date 1465806472 -7200 # Node ID d73006baca3feb53f74796c48d8ba42c25662912 # Parent 3251ec958a29e5c7433bbcf552823939960a94a1 sync diff -r 3251ec958a29 -r d73006baca3f Orthanc/Core/DicomFormat/DicomMap.cpp --- a/Orthanc/Core/DicomFormat/DicomMap.cpp Thu Jun 09 17:04:58 2016 +0200 +++ b/Orthanc/Core/DicomFormat/DicomMap.cpp Mon Jun 13 10:27:52 2016 +0200 @@ -535,10 +535,10 @@ return true; case ValueRepresentation_OtherDouble: - return value.size() <= static_cast((1llu << 32) - 8); + return value.size() <= (static_cast(1) << 32) - 8; case ValueRepresentation_OtherFloat: - return value.size() <= static_cast((1llu << 32) - 4); + return value.size() <= (static_cast(1) << 32) - 4; case ValueRepresentation_OtherLong: return true; @@ -568,7 +568,7 @@ return value.size() <= 28; case ValueRepresentation_UnlimitedCharacters: - return value.size() <= static_cast((1llu << 32) - 2); + return value.size() <= (static_cast(1) << 32) - 2; case ValueRepresentation_UniqueIdentifier: return value.size() <= 64; @@ -580,13 +580,13 @@ return true; case ValueRepresentation_UniversalResource: - return value.size() <= static_cast((1llu << 32) - 2); + return value.size() <= (static_cast(1) << 32) - 2; case ValueRepresentation_UnsignedShort: return value.size() == 2; case ValueRepresentation_UnlimitedText: - return value.size() <= static_cast((1llu << 32) - 2); + return value.size() <= (static_cast(1) << 32) - 2; default: // Assume unsupported tags are OK diff -r 3251ec958a29 -r d73006baca3f Orthanc/Core/DicomFormat/DicomMap.h --- a/Orthanc/Core/DicomFormat/DicomMap.h Thu Jun 09 17:04:58 2016 +0200 +++ b/Orthanc/Core/DicomFormat/DicomMap.h Mon Jun 13 10:27:52 2016 +0200 @@ -171,8 +171,6 @@ static void GetMainDicomTags(std::set& result); - void Print(FILE* fp) const; - void GetTags(std::set& tags) const; static void LoadMainDicomTags(const DicomTag*& tags, diff -r 3251ec958a29 -r d73006baca3f Orthanc/Core/Toolbox.cpp --- a/Orthanc/Core/Toolbox.cpp Thu Jun 09 17:04:58 2016 +0200 +++ b/Orthanc/Core/Toolbox.cpp Mon Jun 13 10:27:52 2016 +0200 @@ -111,19 +111,25 @@ namespace Orthanc { - static bool finish; + static bool finish_; + static ServerBarrierEvent barrierEvent_; #if defined(_WIN32) static BOOL WINAPI ConsoleControlHandler(DWORD dwCtrlType) { // http://msdn.microsoft.com/en-us/library/ms683242(v=vs.85).aspx - finish = true; + finish_ = true; return true; } #else - static void SignalHandler(int) + static void SignalHandler(int signal) { - finish = true; + if (signal == SIGHUP) + { + barrierEvent_ = ServerBarrierEvent_Reload; + } + + finish_ = true; } #endif @@ -140,7 +146,7 @@ } - static void ServerBarrierInternal(const bool* stopFlag) + static ServerBarrierEvent ServerBarrierInternal(const bool* stopFlag) { #if defined(_WIN32) SetConsoleCtrlHandler(ConsoleControlHandler, true); @@ -148,11 +154,13 @@ signal(SIGINT, SignalHandler); signal(SIGQUIT, SignalHandler); signal(SIGTERM, SignalHandler); + signal(SIGHUP, SignalHandler); #endif // Active loop that awakens every 100ms - finish = false; - while (!(*stopFlag || finish)) + finish_ = false; + barrierEvent_ = ServerBarrierEvent_Stop; + while (!(*stopFlag || finish_)) { Toolbox::USleep(100 * 1000); } @@ -163,19 +171,22 @@ signal(SIGINT, NULL); signal(SIGQUIT, NULL); signal(SIGTERM, NULL); + signal(SIGHUP, NULL); #endif + + return barrierEvent_; } - void Toolbox::ServerBarrier(const bool& stopFlag) + ServerBarrierEvent Toolbox::ServerBarrier(const bool& stopFlag) { - ServerBarrierInternal(&stopFlag); + return ServerBarrierInternal(&stopFlag); } - void Toolbox::ServerBarrier() + ServerBarrierEvent Toolbox::ServerBarrier() { const bool stopFlag = false; - ServerBarrierInternal(&stopFlag); + return ServerBarrierInternal(&stopFlag); } diff -r 3251ec958a29 -r d73006baca3f Orthanc/Core/Toolbox.h --- a/Orthanc/Core/Toolbox.h Thu Jun 09 17:04:58 2016 +0200 +++ b/Orthanc/Core/Toolbox.h Mon Jun 13 10:27:52 2016 +0200 @@ -47,11 +47,17 @@ { }; + enum ServerBarrierEvent + { + ServerBarrierEvent_Stop, + ServerBarrierEvent_Reload // SIGHUP signal: reload configuration file + }; + namespace Toolbox { - void ServerBarrier(const bool& stopFlag); + ServerBarrierEvent ServerBarrier(const bool& stopFlag); - void ServerBarrier(); + ServerBarrierEvent ServerBarrier(); void ToUpperCase(std::string& s); // Inplace version