QGrpcHttp2Channel Class | Qt GRPC 6.8.0
Description: The QGrpcHttp2Channel class is an HTTP/2-based of QAbstractGrpcChannel, based on Qt Network HTTP/2 implementation.

- Qt 6.8
- Qt GRPC
- C++ Classes
- QtGrpc (Technical Preview)
- QGrpcHttp2Channel
- Qt 6.8.0 Reference Documentation

# 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
Instantiated By: | QQmlGrpcHttp2Channel
Inherits: | QAbstractGrpcChannel
Status: | Technical Preview

- List of all members, including inherited members

## Public Functions

| QGrpcHttp2Channel(const QGrpcChannelOptions &options)
virtual | ~QGrpcHttp2Channel() override

## 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>(QGrpcChannelOptions{ QUrl("http://localhost:50051", QUrl::StrictMode) }
                            .withSerializationFormat(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 QGrpcChannelOptions &options)

Constructs QGrpcHttp2Channel with options.

### `[override virtual noexcept]` QGrpcHttp2Channel::~QGrpcHttp2Channel()

Destroys the QGrpcHttp2Channel object.