// 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 #include #include #include #include QT_BEGIN_NAMESPACE class QAbstractGrpcClient; class Q_GRPC_EXPORT QGrpcStream final : public QGrpcOperation { Q_OBJECT using StreamHandler = std::function; public: ~QGrpcStream() override; void abort() override; QLatin1StringView method() const; QByteArrayView arg() const; void handler(const QByteArray &data); Q_SIGNALS: void messageReceived(); protected: explicit QGrpcStream(QLatin1StringView method, QByteArrayView arg, const StreamHandler &handler, QAbstractGrpcClient *client); void addHandler(const StreamHandler &handler); bool operator==(const QGrpcStream &other) const { return other.method() == method() && other.arg() == arg(); } private: friend class QAbstractGrpcClient; std::string m_method; QByteArray m_arg; QList m_handlers; }; QT_END_NAMESPACE #endif // QGRPCSTREAM_H