QGrpcOperation Class
QGrpcOperation 类提供了处理客户端通信的常用操作。 gRPC™客户端的通信。更多
Header: | #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) |
详细说明
QGrpcOperation 是以下四种方法类型的基类 gRPC™方法类型的基类:QGrpcCallReply (一元调用)、QGrpcServerStream (服务器流)、QGrpcClientStream (客户端流)和QGrpcBidiStream (双向流)。它提供了与这些远程过程调用(RPC)交互的通用接口。
每个 QGrpcOperation 都对应于通过生成的客户端接口请求的特定 RPC。
有关高级概述,请参阅Qt GRPC Client Guide。
成员函数文档
[override virtual noexcept]
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
如果该操作已完成,则返回 true,这意味着在相应的 RPC 上不能再进行其他操作,否则返回 false。
[noexcept, until 6.13]
const QHash<QByteArray, QByteArray> &QGrpcOperation::metadata() const &
该函数计划在 6.13 版中废弃。
请使用serverInitialMetadata() 和serverTrailingMetadata() 代替。
返回从服务器收到的任何响应消息之前的初始元数据。
初始元数据由服务器在调用建立后立即发送。它可能包括为调用提供上下文的键值对。
注: QGrpcHttp2Channel 将元数据作为 HTTP/2 标头传输。键是不区分大小写的 ASCII 字符串。必须避免使用内部前缀::
(伪头信息)、grpc-
或qtgrpc-
。值可以是 ASCII 字符串或二进制数据。更多信息,请参见RFC 7540 第 8.1.2 节。
另请参阅 serverInitialMetadata() 和serverTrailingMetadata()。
[noexcept]
QLatin1StringView QGrpcOperation::method() const
返回与此 RPC 操作相关的方法名称。
template <typename T, QtProtobuf::if_protobuf_message<T> = true> 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 &
返回响应信息之前从服务器接收到的初始元数据。
初始元数据由服务器在呼叫建立后立即发送。它可能包括为调用提供上下文的键值对。
注: QGrpcHttp2Channel 将元数据作为 HTTP/2 标头传输。键是不区分大小写的 ASCII 字符串。必须避免使用内部前缀::
(伪头信息)、grpc-
或qtgrpc-
。值可以是 ASCII 字符串或二进制数据。更多信息,请参见RFC 7540 第 8.1.2 节。
元数据可能包含同一密钥下的多个条目。
此函数在 Qt 6.10 中引入。
另请参阅 serverInitialMetadataReceived() 和serverTrailingMetadata()。
[noexcept, since 6.10]
const QMultiHash<QByteArray, QByteArray> &QGrpcOperation::serverTrailingMetadata() const &
返回在所有响应信息之后从服务器接收到的尾随元数据。
尾随元数据仅在所有响应信息发送完毕后、RPC 结束前由服务器发送。它可能包括提供有关已完成调用的附加上下文的键值对。
注: QGrpcHttp2Channel 将元数据作为 HTTP/2 标头传输。键值是不区分大小写的 ASCII 字符串。必须避免使用内部前缀::
(伪头信息)、grpc-
或qtgrpc-
。值可以是 ASCII 字符串或二进制数据。更多信息,请参见RFC 7540 第 8.1.2 节。
元数据可能包含同一密钥下的多个条目。
此函数在 Qt 6.10 中引入。
另请参阅 serverInitialMetadata()。
© 2025 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.