1// Copyright (C) 2022 The Qt Company Ltd.
2// Copyright (C) 2019 Alexey Edelev <semlanik@gmail.com>
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
4
5#ifndef QGRPCSTREAM_H
6#define QGRPCSTREAM_H
7
8#include <QtGrpc/qgrpcoperation.h>
9#include <QtGrpc/qtgrpcglobal.h>
10
11#include <memory>
12
13QT_BEGIN_NAMESPACE
14
15class Q_GRPC_EXPORT QGrpcServerStream final : public QGrpcOperation
16{
17 Q_OBJECT
18
19public:
20 explicit QGrpcServerStream(std::shared_ptr<QGrpcOperationContext> operationContext,
21 QObject *parent = nullptr);
22 ~QGrpcServerStream() override;
23
24Q_SIGNALS:
25 void messageReceived();
26
27private:
28 Q_DISABLE_COPY_MOVE(QGrpcServerStream)
29
30public:
31 bool event(QEvent *event) override;
32};
33
34class Q_GRPC_EXPORT QGrpcClientStream final : public QGrpcOperation
35{
36 Q_OBJECT
37
38public:
39 explicit QGrpcClientStream(std::shared_ptr<QGrpcOperationContext> operationContext,
40 QObject *parent = nullptr);
41 ~QGrpcClientStream() override;
42
43 void writeMessage(const QProtobufMessage &message);
44 void writesDone();
45
46private:
47 Q_DISABLE_COPY_MOVE(QGrpcClientStream)
48
49public:
50 bool event(QEvent *event) override;
51};
52
53class Q_GRPC_EXPORT QGrpcBidiStream final : public QGrpcOperation
54{
55 Q_OBJECT
56
57public:
58 explicit QGrpcBidiStream(std::shared_ptr<QGrpcOperationContext> operationContext,
59 QObject *parent = nullptr);
60 ~QGrpcBidiStream() override;
61
62 void writeMessage(const QProtobufMessage &message);
63 void writesDone();
64
65Q_SIGNALS:
66 void messageReceived();
67
68private:
69 Q_DISABLE_COPY_MOVE(QGrpcBidiStream)
70
71public:
72 bool event(QEvent *event) override;
73};
74
75QT_END_NAMESPACE
76
77#endif // QGRPCSTREAM_H
78

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