Providing protobuf and gRPC support for Qt.
Go to file
Dennis Oberst 778371b8ea Deprecate QHash<QBA,QBA> metadata in favor of QMultiHash
Even though gRPC provides some leeway, as "Access to metadata is
language dependent", we have yet to see an implementation which doesn't
support multiple values per key.

Common implementations like grpc-c++, grpc-go or grpc-java provide this
and we should do it aswell.

Ref: https://grpc.io/docs/what-is-grpc/core-concepts/#metadata
Ref: https://github.com/grpc/grpc-go/blob/master/Documentation/grpc-metadata.md#constructing-metadata

Use a base class to implement common functionality for the options
classes. Also use a new common class in the tests.

The QMultiHash overload is selected when the 'QtGrpc::MultiValue'
argument is used in 'metadata' calls. We update the documentation
accordingly.

Deprecation is scheduled for Qt 6.13

Users with a custom Qt build - those who care - should be rewarded with
minimal traces of this "accident" and should not suffer from potential
performance/storage overhead. Therefore we deprecate QtGrpc::MultiValue
for those builds, effectively providing Qt 7 behavior.

[ChangeLog][Deprecation Notice]
Deprecate the metadata()/setMetadata() methods on QGrpcCallOptions and
QGrpcChannelOptions that use QHash in favor of the new overloads that
use QMultiHash. This is more in line with the gRPC specification.

Fixes: QTBUG-136471
Change-Id: I58d14d2c304c06de269c99ba5383beee86d12f77
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2025-05-16 14:42:11 +02:00
LICENSES Add REUSE.toml files and missing licenses 2024-11-06 14:24:23 +01:00
cmake Point to 'protoc' installation guide when WrapProtoc is not found 2025-02-25 11:10:11 +01:00
coin Fix Axivion analysis configuration for protobuf 2025-03-10 08:47:43 +02:00
examples Doc: Add missing \title to GRPC client guide example 2025-04-08 07:51:39 +00:00
src Deprecate QHash<QBA,QBA> metadata in favor of QMultiHash 2025-05-16 14:42:11 +02:00
tests Deprecate QHash<QBA,QBA> metadata in favor of QMultiHash 2025-05-16 14:42:11 +02:00
.clang-format Update licensing of files with infrastructure type 2025-03-13 15:14:53 +01:00
.cmake.conf Bump version to 6.10.0 2025-01-03 14:15:12 +00:00
.gitattributes Add missing .gitattributes and .tag files 2023-01-18 12:03:33 +02:00
.gitignore gitignore: add qmlls.ini files 2024-12-06 14:02:16 +01:00
.gitreview Add .gitreview file 2025-02-25 15:39:48 +01:00
.tag Add missing .gitattributes and .tag files 2023-01-18 12:03:33 +02:00
CMakeLists.txt Add the missing lookup for QuickTest component 2024-03-11 18:00:41 +01:00
LICENSE.Apache-2.0.txt Add REUSE.toml files and missing licenses 2024-11-06 14:24:23 +01:00
REUSE.toml Update licensing of files with infrastructure type 2025-03-13 15:14:53 +01:00
configure.cmake Long live qtprotobufgen 2022-11-08 10:33:39 +01:00
dependencies.yaml Update dependencies on 'dev' in qt/qtgrpc 2025-05-13 16:09:16 +00:00
licenseRule.json Update licensing of files with infrastructure type 2025-03-13 15:14:53 +01:00
qt_attribution.json Doc: Split up protobuf attributions between tools and tests 2025-01-28 17:33:28 +01:00
qt_cmdline.cmake Long live qtprotobufgen 2022-11-08 10:33:39 +01:00