# HG changeset patch # User Alain Mazy # Date 1747855792 -7200 # Node ID 31d41a52ac2f8d8d5640684b46793e6e3757df9b # Parent e919f8d24f092603867b247ad6894622a48056c2 db capabilities diff -r e919f8d24f09 -r 31d41a52ac2f OrthancFramework/Sources/Toolbox.cpp --- a/OrthancFramework/Sources/Toolbox.cpp Wed May 21 21:29:18 2025 +0200 +++ b/OrthancFramework/Sources/Toolbox.cpp Wed May 21 21:29:52 2025 +0200 @@ -499,6 +499,40 @@ } void Toolbox::ComputeMD5(std::string& result, + std::istream& inputStream) + { + md5_state_s state; + md5_init(&state); + + const size_t bufferSize = 1024; + char buffer[bufferSize]; + + while (inputStream.good()) + { + inputStream.read(buffer, bufferSize); + std::streamsize bytesRead = inputStream.gcount(); + + if (bytesRead > 0) + { + md5_append(&state, + reinterpret_cast(buffer), + static_cast(bytesRead)); + } + } + + md5_byte_t actualHash[16]; + md5_finish(&state, actualHash); + + result.resize(32); + for (unsigned int i = 0; i < 16; i++) + { + result[2 * i] = GetHexadecimalCharacter(static_cast(actualHash[i] / 16)); + result[2 * i + 1] = GetHexadecimalCharacter(static_cast(actualHash[i] % 16)); + } + } + + + void Toolbox::ComputeMD5(std::string& result, const std::set& data) { std::string s; diff -r e919f8d24f09 -r 31d41a52ac2f OrthancServer/Plugins/Engine/OrthancPluginDatabaseV4.cpp --- a/OrthancServer/Plugins/Engine/OrthancPluginDatabaseV4.cpp Wed May 21 21:29:18 2025 +0200 +++ b/OrthancServer/Plugins/Engine/OrthancPluginDatabaseV4.cpp Wed May 21 21:29:52 2025 +0200 @@ -2128,6 +2128,7 @@ dbCapabilities_.SetHasFindSupport(systemInfo.supports_find()); dbCapabilities_.SetKeyValueStoresSupport(systemInfo.supports_key_value_stores()); dbCapabilities_.SetQueuesSupport(systemInfo.supports_queues()); + dbCapabilities_.SetAttachmentCustomDataSupport(systemInfo.has_attachment_custom_data()); } open_ = true; diff -r e919f8d24f09 -r 31d41a52ac2f OrthancServer/Plugins/Include/orthanc/OrthancDatabasePlugin.proto --- a/OrthancServer/Plugins/Include/orthanc/OrthancDatabasePlugin.proto Wed May 21 21:29:18 2025 +0200 +++ b/OrthancServer/Plugins/Include/orthanc/OrthancDatabasePlugin.proto Wed May 21 21:29:52 2025 +0200 @@ -174,6 +174,7 @@ bool has_extended_changes = 9; // New in Orthanc 1.12.5 bool supports_key_value_stores = 10; // New in Orthanc 1.12.99 bool supports_queues = 11; // New in Orthanc 1.12.99 + bool has_attachment_custom_data = 12; // New in Orthanc 1.12.99 } } diff -r e919f8d24f09 -r 31d41a52ac2f OrthancServer/Sources/Database/SQLiteDatabaseWrapper.cpp --- a/OrthancServer/Sources/Database/SQLiteDatabaseWrapper.cpp Wed May 21 21:29:18 2025 +0200 +++ b/OrthancServer/Sources/Database/SQLiteDatabaseWrapper.cpp Wed May 21 21:29:52 2025 +0200 @@ -2516,6 +2516,7 @@ dbCapabilities_.SetHasFindSupport(HasIntegratedFind()); dbCapabilities_.SetKeyValueStoresSupport(true); dbCapabilities_.SetQueuesSupport(true); + dbCapabilities_.SetAttachmentCustomDataSupport(true); db_.Open(path); } @@ -2532,6 +2533,7 @@ dbCapabilities_.SetHasFindSupport(HasIntegratedFind()); dbCapabilities_.SetKeyValueStoresSupport(true); dbCapabilities_.SetQueuesSupport(true); + dbCapabilities_.SetAttachmentCustomDataSupport(true); db_.OpenInMemory(); }