QGrpcOperation Class

The QGrpcOperation class provides common operations to handle the gRPC communication from the client side. More...

Header: #include <QGrpcOperation>
CMake: find_package(Qt6 REQUIRED COMPONENTS Grpc)
target_link_libraries(mytarget PRIVATE Qt6::Grpc)
Since: Qt 6.5
Inherits: QObject
Inherited By:

QGrpcBidiStream, QGrpcCallReply, QGrpcClientStream, and QGrpcServerStream

Public Functions

virtual ~QGrpcOperation() override
bool isFinished() const
const QHash<QByteArray, QByteArray> &metadata() const &
QLatin1StringView method() const
std::optional<T> read() const
(since 6.8) bool read(QProtobufMessage *message) const

Public Slots

void cancel()

Signals

void finished(const QGrpcStatus &status)

Detailed Description

QGrpcOperation serves as the base class for the four gRPC method types: QGrpcCallReply (unary calls), QGrpcServerStream (server streaming), QGrpcClientStream (client streaming), and QGrpcBidiStream (bidirectional streaming). It provides a common interface for interacting with these remote procedure calls (RPCs).

Each QGrpcOperation corresponds to a specific RPC requested through the generated client interface.

For a high-level overview, refer to the Qt GRPC Client Guide.

Member Function Documentation

[override virtual noexcept] QGrpcOperation::~QGrpcOperation()

Destroys the QGrpcOperation.

[slot] void QGrpcOperation::cancel()

Tries to cancel the RPC immediately. Successful cancellation cannot be guaranteed. Emits the finished signal with a Cancelled status code.

See also QGrpcOperationContext::cancelRequested.

[signal] void QGrpcOperation::finished(const QGrpcStatus &status)

This signal is emitted when a previously started RPC has finished. The status provides additional information about the outcome of the RPC.

After this signal is received, no further write or read operations should be performed on the operation object. At this point, it is safe to reuse or destroy the RPC object.

Note: This signal is emitted only once, and in most cases, you will want to disconnect right after receiving it to avoid issues, such as lambda captures not being destroyed after receiving the signal. An easy way to achieve this is by using the SingleShotConnection connection type. See Single Shot RPCs for further details.

[noexcept] bool QGrpcOperation::isFinished() const

Returns true if this operation has finished, meaning that no more operations can happen on the corresponding RPC, otherwise returns false.

[noexcept] const QHash<QByteArray, QByteArray> &QGrpcOperation::metadata() const &

Returns the server metadata received from the channel.

Note: For HTTP/2 channels it usually includes the HTTP headers received from the server.

[noexcept] QLatin1StringView QGrpcOperation::method() const

Returns the method name associated with this RPC operation.

template <typename T, QtProtobuf::if_protobuf_message<T> = true> std::optional<T> QGrpcOperation::read() const

Reads a message from a raw byte array stored within this operation object.

Returns an optional deserialized message. On failure, std::nullopt is returned.

Note: This function only participates in overload resolution if T is a subclass of QProtobufMessage.

See also read(QProtobufMessage *).

[since 6.8] bool QGrpcOperation::read(QProtobufMessage *message) const

Reads a message from a raw byte array stored within this operation object.

The function writes the deserialized value to the message pointer.

If the deserialization is successful, this function returns true. Otherwise, it returns false.

This function was introduced in Qt 6.8.

See also read().

© 2024 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.