QtProtobuf  0.6
Protobuf plugin to generate Qt classes
qgrpchttp2channel.h
1 /*
2  * MIT License
3  *
4  * Copyright (c) 2019 Alexey Edelev <semlanik@gmail.com>, Viktor Kopp <vifactor@gmail.com>
5  *
6  * This file is part of QtProtobuf project https://git.semlanik.org/semlanik/qtprotobuf
7  *
8  * Permission is hereby granted, free of charge, to any person obtaining a copy of this
9  * software and associated documentation files (the "Software"), to deal in the Software
10  * without restriction, including without limitation the rights to use, copy, modify,
11  * merge, publish, distribute, sublicense, and/or sell copies of the Software, and
12  * to permit persons to whom the Software is furnished to do so, subject to the following
13  * conditions:
14  *
15  * The above copyright notice and this permission notice shall be included in all copies
16  * or substantial portions of the Software.
17  *
18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
19  * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
20  * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
21  * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23  * DEALINGS IN THE SOFTWARE.
24  */
25 
26 #pragma once //QGrpcHttp2Channel
27 
28 #include "qabstractgrpcchannel.h"
29 
30 #include <QUrl>
31 #include <memory>
32 
33 namespace QtProtobuf {
34 
35 class QAbstractGrpcCredentials;
36 struct QGrpcHttp2ChannelPrivate;
47 class Q_GRPC_EXPORT QGrpcHttp2Channel final : public QAbstractGrpcChannel
48 {
49 public:
55  QGrpcHttp2Channel(const QUrl &url, std::unique_ptr<QAbstractGrpcCredentials> credentials);
57 
58  QGrpcStatus call(const QString &method, const QString &service, const QByteArray &args, QByteArray &ret) override;
59  void call(const QString &method, const QString &service, const QByteArray &args, QtProtobuf::QGrpcAsyncReply *reply) override;
60  void subscribe(QGrpcSubscription *subscription, const QString &service, QAbstractGrpcClient *client) override;
61  std::shared_ptr<QAbstractProtobufSerializer> serializer() const override;
62 private:
63  Q_DISABLE_COPY_MOVE(QGrpcHttp2Channel)
64 
65  std::unique_ptr<QGrpcHttp2ChannelPrivate> dPtr;
66 };
67 }
The QAbstractGrpcChannel class is interface that represents common gRPC channel functionality.
Definition: qabstractgrpcchannel.h:52
The QAbstractGrpcClient class is bridge between gRPC clients and channels.
Definition: qabstractgrpcclient.h:67
The QGrpcAsyncReply class contains data for asynchronous call of gRPC client API.
Definition: qgrpcasyncreply.h:47
The QGrpcHttp2Channel class is HTTP/2 implementation of QAbstractGrpcChannel interface.
Definition: qgrpchttp2channel.h:48
The QGrpcStatus class contains information about last gRPC operation.
Definition: qgrpcstatus.h:58
The QGrpcSubscription class.
Definition: qgrpcsubscription.h:47