1// Copyright (C) 2022 The Qt Company Ltd.
2// Copyright (C) 2019 Alexey Edelev <semlanik@gmail.com>, Viktor Kopp <vifactor@gmail.com>
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
4
5#ifndef QGRPCHTTP2CHANNEL_H
6#define QGRPCHTTP2CHANNEL_H
7
8#include <QtGrpc/qabstractgrpcchannel.h>
9
10#include <QtCore/qtclasshelpermacros.h>
11#include <QtCore/qurl.h>
12
13#include <memory>
14
15QT_BEGIN_NAMESPACE
16
17class QAbstractProtobufSerializer;
18class QGrpcChannelOptions;
19class QGrpcOperationContext;
20
21class QGrpcHttp2ChannelPrivate;
22class Q_GRPC_EXPORT QGrpcHttp2Channel final : public QAbstractGrpcChannel
23{
24public:
25 explicit QGrpcHttp2Channel(const QUrl &hostUri);
26 explicit QGrpcHttp2Channel(const QUrl &hostUri, const QGrpcChannelOptions &options);
27 ~QGrpcHttp2Channel() override;
28
29 [[nodiscard]] QUrl hostUri() const;
30
31private:
32 void call(std::shared_ptr<QGrpcOperationContext> operationContext) override;
33 void serverStream(std::shared_ptr<QGrpcOperationContext> operationContext) override;
34 void clientStream(std::shared_ptr<QGrpcOperationContext> operationContext) override;
35 void bidiStream(std::shared_ptr<QGrpcOperationContext> operationContext) override;
36
37 [[nodiscard]] std::shared_ptr<QAbstractProtobufSerializer> serializer() const override;
38
39 Q_DISABLE_COPY_MOVE(QGrpcHttp2Channel)
40
41 std::unique_ptr<QGrpcHttp2ChannelPrivate> d_ptr;
42};
43
44QT_END_NAMESPACE
45
46#endif // QGRPCHTTP2CHANNEL_H
47

source code of qtgrpc/src/grpc/qgrpchttp2channel.h