Mercurial > hg > orthanc
changeset 7114:d850970fb101
added internal configuration option ORTHANC_ENABLE_THREADS
| author | Sebastien Jodogne <s.jodogne@gmail.com> |
|---|---|
| date | Fri, 14 Aug 2026 11:08:48 +0200 |
| parents | 2f62c814aee2 |
| children | ae6345f0884d |
| files | OrthancFramework/Resources/CMake/OrthancFrameworkConfiguration.cmake OrthancFramework/Resources/CMake/OrthancFrameworkParameters.cmake OrthancFramework/SharedLibrary/OrthancFramework.h.in OrthancFramework/Sources/MultiThreading/Mutex.h OrthancServer/Resources/RunCppCheck-2.1.sh OrthancServer/Resources/RunCppCheck-2.17.0.sh OrthancServer/Resources/RunCppCheck-2.17.1.sh OrthancServer/Resources/RunCppCheck-2.20.0.sh |
| diffstat | 8 files changed, 69 insertions(+), 38 deletions(-) [+] |
line wrap: on
line diff
--- a/OrthancFramework/Resources/CMake/OrthancFrameworkConfiguration.cmake Fri Aug 14 11:06:16 2026 +0200 +++ b/OrthancFramework/Resources/CMake/OrthancFrameworkConfiguration.cmake Fri Aug 14 11:08:48 2026 +0200 @@ -181,6 +181,8 @@ ${CMAKE_CURRENT_LIST_DIR}/../../Sources/HttpServer/StringMatcher.cpp ${CMAKE_CURRENT_LIST_DIR}/../../Sources/Logging.cpp ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MallocMemoryBuffer.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MetricsRegistry.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MultiThreading/CallableGroup.cpp ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MultiThreading/SequentialExecutorService.cpp ${CMAKE_CURRENT_LIST_DIR}/../../Sources/OrthancException.cpp ${CMAKE_CURRENT_LIST_DIR}/../../Sources/OrthancFramework.cpp @@ -633,6 +635,44 @@ endif() +if (ORTHANC_ENABLE_THREADS) + list(APPEND ORTHANC_CORE_SOURCES_INTERNAL + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/Cache/MemoryStringCache.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/Cache/SharedArchive.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/BaseDataIdentifier.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/DataSourceAnswer.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/DataSourceMemoryBudget.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/DataSourceReader.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/DataSourceRequest.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/DataSourceSequentialReader.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/StorageAreaDataSource.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MultiThreading/BlockingSharedMessageQueue.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MultiThreading/Internals/FutureState.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MultiThreading/Internals/ThreadPoolFuture.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MultiThreading/RunnableWorkersPool.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MultiThreading/Semaphore.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MultiThreading/SharedMessageQueue.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MultiThreading/ThreadPool.cpp + ) + + if (ENABLE_DCMTK) + list(APPEND ORTHANC_CORE_SOURCES_INTERNAL + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/DicomDataSource.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/DicomSequentialReader.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/TranscoderDataSource.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DicomParsing/IDicomTranscoder.cpp + ) + endif() + + if (ENABLE_MODULE_JOBS) + list(APPEND ORTHANC_CORE_SOURCES_INTERNAL + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/JobsEngine/JobsEngine.cpp + ${CMAKE_CURRENT_LIST_DIR}/../../Sources/JobsEngine/JobsRegistry.cpp + ) + endif() +endif() + + if (ORTHANC_SANDBOXED) add_definitions( -DORTHANC_SANDBOXED=1 @@ -654,49 +694,21 @@ ) list(APPEND ORTHANC_CORE_SOURCES_INTERNAL - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/Cache/MemoryStringCache.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/Cache/SharedArchive.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/BaseDataIdentifier.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/DataSourceAnswer.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/DataSourceMemoryBudget.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/DataSourceReader.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/DataSourceRequest.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/DataSourceSequentialReader.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/StorageAreaDataSource.cpp ${CMAKE_CURRENT_LIST_DIR}/../../Sources/FileBuffer.cpp ${CMAKE_CURRENT_LIST_DIR}/../../Sources/FileStorage/FilesystemStorage.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MetricsRegistry.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MultiThreading/BlockingSharedMessageQueue.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MultiThreading/CallableGroup.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MultiThreading/Internals/FutureState.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MultiThreading/Internals/ThreadPoolFuture.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MultiThreading/RunnableWorkersPool.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MultiThreading/Semaphore.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MultiThreading/SharedMessageQueue.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/MultiThreading/ThreadPool.cpp ${CMAKE_CURRENT_LIST_DIR}/../../Sources/SharedLibrary.cpp ${CMAKE_CURRENT_LIST_DIR}/../../Sources/SystemToolbox.cpp ${CMAKE_CURRENT_LIST_DIR}/../../Sources/TemporaryFile.cpp ) - - if (ENABLE_DCMTK) - list(APPEND ORTHANC_CORE_SOURCES_INTERNAL - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/DicomDataSource.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/DicomSequentialReader.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DataSource/TranscoderDataSource.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/DicomParsing/IDicomTranscoder.cpp - ) - endif() - - if (ENABLE_MODULE_JOBS) - list(APPEND ORTHANC_CORE_SOURCES_INTERNAL - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/JobsEngine/JobsEngine.cpp - ${CMAKE_CURRENT_LIST_DIR}/../../Sources/JobsEngine/JobsRegistry.cpp - ) - endif() endif() +if (ORTHANC_ENABLE_THREADS) + add_definitions(-DORTHANC_ENABLE_THREADS=1) +else() + add_definitions(-DORTHANC_ENABLE_THREADS=0) +endif() + if (ORTHANC_ENABLE_LOGGING) add_definitions(-DORTHANC_ENABLE_LOGGING=1)
--- a/OrthancFramework/Resources/CMake/OrthancFrameworkParameters.cmake Fri Aug 14 11:06:16 2026 +0200 +++ b/OrthancFramework/Resources/CMake/OrthancFrameworkParameters.cmake Fri Aug 14 11:08:48 2026 +0200 @@ -144,7 +144,10 @@ set(ENABLE_BOOST_PROGRAM_OPTIONS OFF CACHE BOOL "Enable support for the boost::program_options library") # New in Orthanc 1.13.0 set(ORTHANC_SANDBOXED OFF CACHE INTERNAL - "Whether Orthanc runs inside a sandboxed environment (such as Google NaCl or WebAssembly)") + "Whether Orthanc runs inside a sandboxed environment, notably without access to files (such as Google NaCl or WebAssembly)") + +set(ORTHANC_ENABLE_THREADS ON CACHE INTERNAL + "Whether support for threads is available (must be set to OFF for WebAssembly)") set(ORTHANC_BUILDING_FRAMEWORK_LIBRARY OFF CACHE INTERNAL "Whether we are in the process of building the Orthanc Framework shared library")
--- a/OrthancFramework/SharedLibrary/OrthancFramework.h.in Fri Aug 14 11:06:16 2026 +0200 +++ b/OrthancFramework/SharedLibrary/OrthancFramework.h.in Fri Aug 14 11:08:48 2026 +0200 @@ -73,6 +73,7 @@ #cmakedefine01 ORTHANC_ENABLE_LOGGING #cmakedefine01 ORTHANC_ENABLE_LOGGING_STDIO #cmakedefine01 ORTHANC_ENABLE_MONGOOSE +#cmakedefine01 ORTHANC_ENABLE_THREADS #cmakedefine01 ORTHANC_SANDBOXED #cmakedefine01 ORTHANC_STATIC_BOOST #cmakedefine01 ORTHANC_STATIC_JSONCPP
--- a/OrthancFramework/Sources/MultiThreading/Mutex.h Fri Aug 14 11:06:16 2026 +0200 +++ b/OrthancFramework/Sources/MultiThreading/Mutex.h Fri Aug 14 11:08:48 2026 +0200 @@ -26,9 +26,17 @@ #include "../OrthancFramework.h" +#if !defined(ORTHANC_ENABLE_THREADS) +# error The macro ORTHANC_ENABLE_THREADS must be defined +#endif + +#if (ORTHANC_ENABLE_THREADS != 0) && (ORTHANC_ENABLE_THREADS != 1) +# error The macro ORTHANC_ENABLE_THREADS must set to 0 or 1 +#endif + #include <boost/noncopyable.hpp> -#if !defined(__EMSCRIPTEN__) +#if ORTHANC_ENABLE_THREADS == 1 # include <boost/thread/mutex.hpp> #endif @@ -36,7 +44,7 @@ { // Wrapper class for compatibility with Emscripten -#if defined(__EMSCRIPTEN__) +#if ORTHANC_ENABLE_THREADS == 0 class ORTHANC_PUBLIC Mutex : public boost::noncopyable { @@ -54,7 +62,7 @@ }; }; -#else +#elif ORTHANC_ENABLE_THREADS == 1 class ORTHANC_PUBLIC Mutex : public boost::noncopyable { @@ -79,5 +87,8 @@ } }; }; + +#else +# error Internal error #endif }
--- a/OrthancServer/Resources/RunCppCheck-2.1.sh Fri Aug 14 11:06:16 2026 +0200 +++ b/OrthancServer/Resources/RunCppCheck-2.1.sh Fri Aug 14 11:08:48 2026 +0200 @@ -81,6 +81,7 @@ -DORTHANC_ENABLE_PUGIXML=1 \ -DORTHANC_ENABLE_SQLITE=1 \ -DORTHANC_ENABLE_SSL=1 \ + -DORTHANC_ENABLE_THREADS=1 \ -DORTHANC_ENABLE_ZLIB=1 \ -DORTHANC_SANDBOXED=0 \ -DORTHANC_SQLITE_VERSION=3027001 \
--- a/OrthancServer/Resources/RunCppCheck-2.17.0.sh Fri Aug 14 11:06:16 2026 +0200 +++ b/OrthancServer/Resources/RunCppCheck-2.17.0.sh Fri Aug 14 11:08:48 2026 +0200 @@ -96,6 +96,7 @@ -DORTHANC_ENABLE_PUGIXML=1 \ -DORTHANC_ENABLE_SQLITE=1 \ -DORTHANC_ENABLE_SSL=1 \ + -DORTHANC_ENABLE_THREADS=1 \ -DORTHANC_ENABLE_ZLIB=1 \ -DORTHANC_SANDBOXED=0 \ -DORTHANC_SQLITE_VERSION=3027001 \
--- a/OrthancServer/Resources/RunCppCheck-2.17.1.sh Fri Aug 14 11:06:16 2026 +0200 +++ b/OrthancServer/Resources/RunCppCheck-2.17.1.sh Fri Aug 14 11:08:48 2026 +0200 @@ -96,6 +96,7 @@ -DORTHANC_ENABLE_PUGIXML=1 \ -DORTHANC_ENABLE_SQLITE=1 \ -DORTHANC_ENABLE_SSL=1 \ + -DORTHANC_ENABLE_THREADS=1 \ -DORTHANC_ENABLE_ZLIB=1 \ -DORTHANC_USE_SYSTEM_MINIZIP=0 \ -DORTHANC_SANDBOXED=0 \
--- a/OrthancServer/Resources/RunCppCheck-2.20.0.sh Fri Aug 14 11:06:16 2026 +0200 +++ b/OrthancServer/Resources/RunCppCheck-2.20.0.sh Fri Aug 14 11:08:48 2026 +0200 @@ -83,6 +83,7 @@ -DORTHANC_ENABLE_PUGIXML=1 \ -DORTHANC_ENABLE_SQLITE=1 \ -DORTHANC_ENABLE_SSL=1 \ + -DORTHANC_ENABLE_THREADS=1 \ -DORTHANC_ENABLE_ZLIB=1 \ -DORTHANC_SANDBOXED=0 \ -DORTHANC_SQLITE_VERSION=3027001 \
