QGrpcOperation Class
QGrpcOperation 类提供了用于处理 gRPC™ 客户端的通信。更多内容...
| 头文件: | #include <QGrpcOperation> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Grpc) target_link_libraries(mytarget PRIVATE Qt6::Grpc) |
| 自: | Qt 6.5 |
| 继承自: | QObject |
| 被继承于: | QGrpcBidiStream、QGrpcCallReply 、QGrpcClientStream 以及QGrpcServerStream |
公共函数
| virtual | ~QGrpcOperation() override |
| bool | isFinished() const |
(until 6.13) const QHash<QByteArray, QByteArray> & | metadata() const & |
| QLatin1StringView | method() const |
| std::optional<T> | read() const |
(since 6.8) bool | read(QProtobufMessage *message) const |
| QMetaType | responseMetaType() const |
(since 6.10) const QMultiHash<QByteArray, QByteArray> & | serverInitialMetadata() const & |
(since 6.10) const QMultiHash<QByteArray, QByteArray> & | serverTrailingMetadata() const & |
公共槽
| void | cancel() |
信号
| void | finished(const QGrpcStatus &status) |
(since 6.11) void | serverInitialMetadataReceived(const QMultiHash<QByteArray, QByteArray> &metadata) |
详细说明
QGrpcOperation 是以下四种 gRPC™ 方法类型的基类:QGrpcCallReply (一元调用)、QGrpcServerStream (服务器流式传输)、QGrpcClientStream (客户端流式传输)和QGrpcBidiStream (双向流式传输)。它为与这些远程过程调用(RPC)进行交互提供了一个通用接口。
每个 QGrpcOperation 对应通过生成的客户端接口请求的特定 RPC。
有关高级概述,请参阅《Qt GRPC 客户端指南》。
成员函数文档
[override virtual noexcept] QGrpcOperation::~QGrpcOperation()
销毁QGrpcOperation 。
[slot] void QGrpcOperation::cancel()
尝试立即取消 RPC。无法保证取消成功。会发出finished 信号,并返回状态码Cancelled 。
另请参阅 QGrpcOperationContext::cancelRequested 。
[signal] void QGrpcOperation::finished(const QGrpcStatus &status)
当先前启动的 RPC 完成时,会发出此信号。status 提供了有关 RPC 结果的更多信息。
收到此信号后,不应再对操作对象执行任何写入或读取操作。此时,可以安全地重用或销毁该 RPC 对象。
注意:此 信号仅触发一次,在大多数情况下,您应在接收到该信号后立即断开连接,以避免出现诸如接收到信号后 lambda 捕获未被销毁等问题。实现此目的的简便方法是使用SingleShotConnection 连接类型。更多详细信息请参阅“单次触发 RPC”。
[noexcept] bool QGrpcOperation::isFinished() const
如果该操作已完成(即对应 RPC 上不再能进行任何操作),则返回 true;否则返回 false。
[noexcept, until 6.13] const QHash<QByteArray, QByteArray> &QGrpcOperation::metadata() const &
该函数计划在 6.13 版本中被废弃。
请改用serverInitialMetadata() 和serverTrailingMetadata()。
返回在收到任何响应消息之前从服务器接收到的初始元数据。
初始元数据由服务器在呼叫建立后立即发送。它可能包含为呼叫提供上下文的键值对。
注意: 以grpc- 或qtgrpc- 为前缀的键由 gRPC 和QtGrpc 保留。在构建请求时,使用这些键提供的条目将被忽略。具体的通道可能会施加进一步的限制;请参阅QGrpcHttp2Channel#Reserved metadata keys 。
另请参阅 serverInitialMetadata() 和serverTrailingMetadata()。
[noexcept] QLatin1StringView QGrpcOperation::method() const
返回与该 RPC 操作相关联的方法名称。
template <typename T> requires QtProtobuf::if_protobuf_message<T> std::optional<T> QGrpcOperation::read() const
从存储在此操作对象中的原始字节数组中读取一条消息。
返回一个可选的反序列化消息。若操作失败,则返回std::nullopt 。
注意: 仅当 `T ` 是 `QProtobufMessage` 的子类时,此 函数才参与重载解析。
另请参阅 read(QProtobufMessage *)。
[since 6.8] bool QGrpcOperation::read(QProtobufMessage *message) const
从存储在此操作对象中的原始字节数组中读取一条消息。
该函数将反序列化的值写入message 指针。
如果反序列化成功,该函数返回true 。否则,返回false 。
该函数在 Qt 6.8 中引入。
另请参阅 read()。
QMetaType QGrpcOperation::responseMetaType() const
返回 RPC 响应消息的元数据类型。
[noexcept, since 6.10] const QMultiHash<QByteArray, QByteArray> &QGrpcOperation::serverInitialMetadata() const &
返回在收到任何响应消息之前从服务器接收到的初始元数据。
初始元数据由服务器在呼叫建立后立即发送。它可能包含提供呼叫上下文的键值对。
注意: 带有grpc- 或qtgrpc- 前缀的键 被gRPC 和QtGrpc 保留。在构建请求时,使用这些前缀提供的条目将被忽略。具体通道可能会施加进一步的限制;请参阅QGrpcHttp2Channel#Reserved metadata keys 。
元数据可在同一键下包含多个条目。
该函数在 Qt 6.10 中引入。
另请参阅 serverInitialMetadataReceived() 和serverTrailingMetadata()。
[signal, since 6.11] void QGrpcOperation::serverInitialMetadataReceived(const QMultiHash<QByteArray, QByteArray> &metadata)
当服务器返回其初始元数据时,会发出此信号。服务器在 RPC 的初始响应之前,会将初始元数据发送给客户端。
接收到的元数据保存在metadata 中,也可通过serverInitialMetadata()获取。
注意: 以grpc- 或qtgrpc- 为前缀的键由 gRPC 和QtGrpc 预留。在构建请求时,使用这些前缀提供的条目将被忽略。具体通道可能会施加进一步的限制;请参阅QGrpcHttp2Channel#Reserved metadata keys 。
该函数在 Qt 6.11 中引入。
另请参阅 serverInitialMetadata()。
[noexcept, since 6.10] const QMultiHash<QByteArray, QByteArray> &QGrpcOperation::serverTrailingMetadata() const &
返回在所有响应消息之后从服务器接收到的尾部元数据。
尾部元数据仅由服务器在所有响应消息发送完毕后、RPC 完成之前发送。它可能包含键值对,用于提供有关已完成调用的额外上下文信息。
注意: 以grpc- 或qtgrpc- 为前缀的键被 gRPC 和QtGrpc 预留。在构建请求时,使用这些前缀提供的条目将被忽略。具体通道可能会施加进一步的限制;请参阅QGrpcHttp2Channel#Reserved metadata keys 。
元数据中同一键下可能包含多个条目。
该函数在 Qt 6.10 中引入。
另请参阅 serverInitialMetadata()。
© 2026 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.