QGrpcHttp2Channel Class
The QGrpcHttp2Channel class is an HTTP/2-based of QAbstractGrpcChannel, based on Qt Network HTTP/2 implementation. 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
Uses QGrpcChannelOptions and QGrpcCallOptions to control the HTTP/2 communication with the server.
Use QGrpcChannelOptions to set the SSL configuration, application-specific HTTP/2 headers, and connection timeouts.
QGrpcCallOptions control channel parameters for the specific unary call or gRPC stream.
QGrpcHttp2Channel uses QGrpcChannelOptions to select the serialization format for the protobuf messages. The serialization format can be set either using the content-type
metadata or by setting the QGrpcChannelOptions::serializationFormat directly.
Using the following example you can create a QGrpcHttp2Channel with the JSON serialization format using the content-type
metadata:
auto channelJson = std::make_shared< QGrpcHttp2Channel>(QGrpcChannelOptions{ QUrl("http://localhost:50051", QUrl::StrictMode) } .withMetadata({ { "content-type"_ba, "application/grpc+json"_ba } }));
Also you can use own serializer and custom content-type
as following:
class DummySerializer : public QAbstractProtobufSerializer { ... }; auto channel = std::make_shared< QGrpcHttp2Channel>(QUrl("http://localhost:50051", QUrl::StrictMode), QGrpcChannelOptions{} .setSerializationFormat(QGrpcSerializationFormat{ "dummy", std::make_shared<DummySerializer>() }));
QGrpcHttp2Channel will use the DummySerializer
to serialize and deserialize protobuf message and use the content-type: application/grpc+dummy
header when sending HTTP/2 requests to server.
QGrpcChannelOptions::serializationFormat has higher priority and if the content-type
metadata suffix doesn't match the QGrpcSerializationFormat::suffix of the specified QGrpcChannelOptions::serializationFormat QGrpcHttp2Channel produces warning.
See also QGrpcChannelOptions, QGrpcCallOptions, and QSslConfiguration.
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.