// Copyright (C) 2022 The Qt Company Ltd. // Copyright (C) 2019 Alexey Edelev // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #ifndef QGRPCSTREAM_H #define QGRPCSTREAM_H #include #include #include QT_BEGIN_NAMESPACE class Q_GRPC_EXPORT QGrpcServerStream final : public QGrpcOperation { Q_OBJECT QT_DEFINE_TAG_STRUCT(PrivateConstructor); public: explicit QGrpcServerStream(const QLatin1StringView service, const QLatin1StringView method, const QGrpcCallOptions &options, const std::weak_ptr &channel, PrivateConstructor); ~QGrpcServerStream() override; Q_SIGNALS: void messageReceived(); private: Q_DISABLE_COPY_MOVE(QGrpcServerStream) friend class QGrpcClientBasePrivate; public: bool event(QEvent *event) override; }; class Q_GRPC_EXPORT QGrpcClientStream final : public QGrpcOperation { Q_OBJECT QT_DEFINE_TAG_STRUCT(PrivateConstructor); public: explicit QGrpcClientStream(const QLatin1StringView service, const QLatin1StringView method, const QGrpcCallOptions &options, const std::weak_ptr &channel, PrivateConstructor); ~QGrpcClientStream() override; void writeMessage(const QProtobufMessage &message); void writesDone(); private: Q_DISABLE_COPY_MOVE(QGrpcClientStream) friend class QGrpcClientBasePrivate; public: bool event(QEvent *event) override; }; class Q_GRPC_EXPORT QGrpcBidiStream final : public QGrpcOperation { Q_OBJECT QT_DEFINE_TAG_STRUCT(PrivateConstructor); public: explicit QGrpcBidiStream(const QLatin1StringView service, const QLatin1StringView method, const QGrpcCallOptions &options, const std::weak_ptr &channel, PrivateConstructor); ~QGrpcBidiStream() override; void writeMessage(const QProtobufMessage &message); void writesDone(); Q_SIGNALS: void messageReceived(); private: Q_DISABLE_COPY_MOVE(QGrpcBidiStream) friend class QGrpcClientBasePrivate; public: bool event(QEvent *event) override; }; QT_END_NAMESPACE #endif // QGRPCSTREAM_H