QGrpcHttp2Channel Class
The QGrpcHttp2Channel class provides a HTTP/2 transport layer for gRPC™ communication. More...
Header: | #include <QGrpcHttp2Channel> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Grpc) target_link_libraries(mytarget PRIVATE Qt6::Grpc) |
Since: | Qt 6.5 |
In QML: | GrpcHttp2Channel |
Inherits: | QAbstractGrpcChannel |
Public Functions
QGrpcHttp2Channel(const QUrl &hostUri) | |
QGrpcHttp2Channel(const QUrl &hostUri, const QGrpcChannelOptions &options) | |
virtual | ~QGrpcHttp2Channel() override |
QUrl | hostUri() const |
Detailed Description
The QGrpcHttp2Channel class implements QAbstractGrpcChannel, enabling gRPC™ communication carried over HTTP/2 framing.
HTTP/2 introduces several advantages over its predecessor, HTTP/1.1, making QGrpcHttp2Channel well-suited for high-performance, real-time applications that require efficient communication, without sacrificing security or reliability, by using multiplexed TCP connections.
The channel can be customized with SSL support, a custom serializationFormat, or other options by constructing it with a QGrpcChannelOptions containing the required customizations.
Content-Type
The content-type in gRPC over HTTP/2 determines the message serialization format. It must start with application/grpc
and can include a suffix. The format follows this scheme:
"content-type": "application/grpc" [("+proto" / "+json" / {custom})]
For example:
application/grpc+proto
specifies Protobuf encoding.application/grpc+json
specifies JSON encoding.
The serialization format can be configured either by specifying the content-type
inside the metadata or by setting the serializationFormat directly. By default, the application/grpc
content-type is used.
To configure QGrpcHttp2Channel with the JSON serialization format using content-type
metadata:
auto jsonChannel = std::make_shared<QGrpcHttp2Channel>( QUrl("http://localhost:50051"_L1), QGrpcChannelOptions().setMetadata({ { "content-type"_ba, "application/grpc+json"_ba }, }) );
For a custom serializer and content-type
, you can directly set the serialization format:
class DummySerializer : public QAbstractProtobufSerializer { ... }; QGrpcSerializationFormat dummyFormat("dummy", std::make_shared<DummySerializer>());
auto dummyChannel = std::make_shared<QGrpcHttp2Channel>( QUrl("http://localhost:50051"_L1), QGrpcChannelOptions().setSerializationFormat(dummyFormat) );
This uses DummySerializer
for encoding and decoding messages with the dummy
suffix. For HTTP/2 transportation this results in the application/grpc+dummy
content-type.
Note: Custom serializers require server support for the specified format.
See also QAbstractGrpcChannel, QGrpcChannelOptions, and QGrpcSerializationFormat.
Member Function Documentation
[explicit]
QGrpcHttp2Channel::QGrpcHttp2Channel(const QUrl &hostUri)
Constructs QGrpcHttp2Channel with hostUri.
[explicit]
QGrpcHttp2Channel::QGrpcHttp2Channel(const QUrl &hostUri, const QGrpcChannelOptions &options)
Constructs QGrpcHttp2Channel with hostUri and options.
[override virtual noexcept]
QGrpcHttp2Channel::~QGrpcHttp2Channel()
Destroys the QGrpcHttp2Channel object.
QUrl QGrpcHttp2Channel::hostUri() const
Returns the host URI for this channel.
© 2024 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.