QGrpcOperationContext Class
QGrpcOperationContextクラスは、個々のgRPC操作とチャネル間の通信のためのコンテキストを提供します。詳細...
Header: | #include <QGrpcOperationContext> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Grpc) target_link_libraries(mytarget PRIVATE Qt6::Grpc) |
Since: | Qt 6.7 |
Inherits: | 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 は、QGrpcCallReply 、QGrpcServerStream 、QGrpcClientStream 、QGrpcBidiStream など、QGrpcOperation の特殊化を返します。これらのクラスは、基盤となる QGrpcOperationContext と暗黙的に統合されています。
注: カスタム・チャネルを実装しない限り、このクラスを直接使用しないでください。
このクラスに含まれるシグナルは、クライアント向けのQGrpcOperation とQAbstractGrpcChannel 実装間の通信を構築するために使用されます。これらの操作は本質的に非同期であり、複数のRPCが同じチャネル上で同時に操作できます。チャネルは通常、すべての操作を同じように扱い、その RPC タイプがサポートする機能のサブセットを正しくサポートし、制限するのはチャネルの責任です。
チャネルの実装によってのみ発せられるべきシグナルは以下のとおりです:
- finished()
- messageReceived()
QGrpcOperation およびその特殊化によって発せられるシグナルは次のとおりです:
デフォルトのシグナル処理は提供されていないため、QAbstractGrpcChannel のカスタム実装はクライアントのシグナルを処理し、それに応じて独自のシグナルを発する必要があります。
メンバ関数ドキュメント
void QGrpcOperationContext::setServerMetadata(QHash<QByteArray, QByteArray> &&metadata)
void QGrpcOperationContext::setServerMetadata(const QHash<QByteArray, QByteArray> &metadata)
サービスから受け取ったサーバーmetadata を設定します。
[override virtual noexcept]
QGrpcOperationContext::~QGrpcOperationContext()
operation-contextを破棄します。
[noexcept]
QByteArrayView QGrpcOperationContext::argument() const
このoperation-contextが利用するシリアライズされた引数を返す。
[noexcept]
const QGrpcCallOptions &QGrpcOperationContext::callOptions() const &
この操作コンテキストが利用する呼び出しオプションを返す。
チャネル全体のオプションについては、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
この operation-context に関連付けられたサービス名を返す。
[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も参照して ください。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。