QGrpcOperationContext Class

QGrpcOperationContextクラスは、個々のオペレーションとチャネル間の通信のためのコンテキストを提供します。 gRPCコンテキストを提供します。詳細...

ヘッダー #include <QGrpcOperationContext>
CMake: find_package(Qt6 REQUIRED COMPONENTS Grpc)
target_link_libraries(mytarget PRIVATE Qt6::Grpc)
以来:Qt 6.7
継承: QObject

パブリック関数

virtual ~QGrpcOperationContext() override
QByteArrayView argument() const
const QGrpcCallOptions &callOptions() const &
QLatin1StringView method() const
std::shared_ptr<const QAbstractProtobufSerializer> serializer() const
const QHash<QByteArray, QByteArray> &serverMetadata() const &
QLatin1StringView service() const
void setServerMetadata(QHash<QByteArray, QByteArray> &&metadata)
void setServerMetadata(const QHash<QByteArray, QByteArray> &metadata)

シグナル

void cancelRequested()
void messageReceived(const QByteArray &data)
void writeMessageRequested(const QByteArray &data)
void writesDoneRequested()

詳細説明

QGrpcOperationContextは、リモート・プロシージャ・コール(RPC)が要求されたときに内部的に構築され、クライアントの操作要求とチャネルの操作結果の相互作用を仲介します。

クライアント・インターフェースで要求された RPC は、QGrpcCallReplyQGrpcServerStreamQGrpcClientStreamQGrpcBidiStream など、QGrpcOperation の特殊化を返します。これらのクラスは、基盤となる QGrpcOperationContext と暗黙的に統合されています。

注: カスタム・チャネルを実装しない限り、このクラスを直接使用しないでください。

このクラスに含まれるシグナルは、クライアント向けのQGrpcOperationQAbstractGrpcChannel 実装間の通信を構築するために使用されます。これらの操作は本質的に非同期であり、複数のRPCが同じチャネル上で同時に操作できます。チャネルは通常、すべての操作を同じように扱い、その RPC タイプがサポートする機能のサブセットを正しくサポートし、制限するのはチャネルの責任です。

チャネルの実装によってのみ発せられるべきシグナルは以下のとおりです:

QGrpcOperation およびその特殊化によって発せられるシグナルは次のとおりです:

デフォルトのシグナル処理は提供されていないため、QAbstractGrpcChannel のカスタム実装はクライアントのシグナルを処理し、それに応じて独自のシグナルを発する必要があります。

メンバ関数のドキュメント

void QGrpcOperationContext::setServerMetadata(QHash<QByteArray, QByteArray> &&metadata)

void QGrpcOperationContext::setServerMetadata(const QHash<QByteArray, QByteArray> &metadata)

サービスから受け取ったサーバーmetadata を設定する。

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

操作コンテキストを破棄する。

[noexcept] QByteArrayView QGrpcOperationContext::argument() const

このoperation-contextが利用する直列化された引数を返します。

[noexcept] const QGrpcCallOptions &QGrpcOperationContext::callOptions() const &

このoperation-contextが使用する呼オプションを返す。

チャネル全体のオプションについては、QGrpcChannelOptions を参照。

[signal] void QGrpcOperationContext::cancelRequested()

このシグナルは、通信のキャンセルを要求するときにQGrpcOperation

チャネルはキャンセル・ロジックをこのシグナルに接続し、RPCのキャンセルを試みて直ちに戻ることが期待される。キャンセルの成功は保証されない。チャネルから受信したデータをさらに処理する必要はないので、避けるべきである。

QGrpcOperation::cancelも参照のこと

[signal] void QGrpcOperationContext::messageReceived(const QByteArray &data)

このシグナルは、サーバーから新しいチャンク(data )を受信 したときに、チャネルが発するべきである。

クライアントストリームと単項呼の場合、これは、1つの最終応答が到着し、 通信が終了しようとしていることを意味する。

サーバストリームや双方向ストリームの場合、このシグナルは、新しいメッセージを受信するたびに、チャネルから継続的に発信されなければならない。

注意: このシグナルは、QGrpcOperation に暗黙的に接続されています。

QGrpcServerStream::messageReceived およびQGrpcBidiStream::messageReceivedも参照

[noexcept] QLatin1StringView QGrpcOperationContext::method() const

このoperation-contextに関連付けられているサービスのメソッド名を返します。

std::shared_ptr<const QAbstractProtobufSerializer> QGrpcOperationContext::serializer() const

この操作コンテキストのシリアライザーを返します。

[noexcept] const QHash<QByteArray, QByteArray> &QGrpcOperationContext::serverMetadata() const &

サーバーから受け取ったメタデータを返す。

注意: このメソッドはQGrpcOperation で暗黙的に使用されます。

setServerMetadata()も参照

[noexcept] QLatin1StringView QGrpcOperationContext::service() const

この操作コンテキストに関連付けられたサービス名を返します。

[signal] void QGrpcOperationContext::writeMessageRequested(const QByteArray &data)

このシグナルは、QGrpcClientStream またはQGrpcBidiStream が、data をチャネルが送出できるようにシリアライズしたときに発せられる。

チャネルは、書き込みロジックをこのシグナルに接続し、シリアル化されたデータをチャネル関連のヘッダでラップしてから、それをワイヤに書き込むことが期待されます。

QGrpcClientStream::writeMessage およびQGrpcBidiStream::writeMessageも参照して ください。

[signal] void QGrpcOperationContext::writesDoneRequested()

このシグナルは、QGrpcClientStream またはQGrpcBidiStream が、メッセージの書き込みが終了したことを示すために発する。チャネルはこれに応答してストリームを半閉鎖する必要がある。

注意: このシグナルを受信した後は、ストリーミング RPC に対してこれ以上の書き込み操作は許可されません。サーバはまだメッセージを送信できるので、messageReceived() で転送する必要がある。

QGrpcClientStream::writesDone およびQGrpcBidiStream::writesDoneも参照のこと

© 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.