このページでは

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
const QGrpcCallOptions &callOptions() const &
(since 6.11) QtGrpc::RpcDescriptor descriptor() const
QLatin1StringView method() const
(since 6.11) quint64 operationId() const
QMetaType responseMetaType() const
std::shared_ptr<const QAbstractProtobufSerializer> serializer() const
(since 6.10) const QMultiHash<QByteArray, QByteArray> &serverInitialMetadata() const &
(until 6.13) const QHash<QByteArray, QByteArray> &serverMetadata() const &
(since 6.10) const QMultiHash<QByteArray, QByteArray> &serverTrailingMetadata() const &
QLatin1StringView service() const
void setResponseMetaType(QMetaType metaType)
(since 6.10) void setServerInitialMetadata(QMultiHash<QByteArray, QByteArray> &&metadata)
(until 6.13) void setServerMetadata(QHash<QByteArray, QByteArray> &&metadata)
(until 6.13) void setServerMetadata(const QHash<QByteArray, QByteArray> &metadata)
(since 6.10) void setServerTrailingMetadata(QMultiHash<QByteArray, QByteArray> &&metadata)

シグナル

void cancelRequested()
void finished(const QGrpcStatus &status)
void messageReceived(const QByteArray &data)
(since 6.11) void serverInitialMetadataReceived(const QMultiHash<QByteArray, QByteArray> &metadata)
void writeMessageRequested(const QByteArray &data)
void writesDoneRequested()

詳細な説明

QGrpcOperationContext は、リモートプロシージャコール (RPC) が要求された際に内部的に生成され、クライアントの操作要求とチャネルの操作結果との間のやり取りを仲介します。

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

注: カスタムチャネルを実装する場合を除き、このクラスを直接使用しないでください 。

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

チャネルの実装によってのみ発行されるべきシグナルは、以下の通りです:

QGrpcOperation およびその特殊化によって発行されるシグナルは以下の通りです:

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

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

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

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

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

この操作コンテキストで使用されているコールオプションを返します。

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

[signal] void QGrpcOperationContext::cancelRequested()

この信号は、QGrpcOperation が通信のキャンセルを要求する際に発信されます。

チャネル側は、この信号にキャンセル処理ロジックを接続し、RPCのキャンセルを試み、Cancelled のステータスコードで終了させる必要があります。キャンセルが成功するとは保証されません。チャネルから受信したデータのさらなる処理は不要であり、避けるべきです。

QGrpcOperation::cancelも参照してください 。

[noexcept, since 6.11] QtGrpc::RpcDescriptor QGrpcOperationContext::descriptor() const

この操作コンテキストのQtGrpc::RpcDescriptor を返します。

この関数は Qt 6.11 で導入されました。

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

この信号は、RPCが終了した際にチャネルから発信されるべきものです。

これは通常、サーバーが要求されたRPCに対してstatus を送信し、接続を閉じたことを意味します。QAbstractGrpcChannel の実装は、この状況を検出し、シグナルを発行する必要があります。

このシグナルを受信した後、この操作コンテキストを介してそれ以上の通信が行われてはなりません。その後、クライアント側は対応する RPC オブジェクトを安全に削除できます。

注:この シグナルは、QGrpcOperation に対応するシグナルと暗黙的に関連付けられています。

「QGrpcOperation::finished」も参照してください 。

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

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

クライアントストリームおよび単方向呼び出しの場合、これは、単一の最終応答が到着し、通信がまもなく終了することを意味します。

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

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

「 QGrpcServerStream::messageReceived 」および「QGrpcBidiStream::messageReceived 」も参照してください 。

[noexcept] QLatin1StringView QGrpcOperationContext::method() const

この操作コンテキストに関連付けられているサービスのメソッド名を返します。

[noexcept, since 6.11] quint64 QGrpcOperationContext::operationId() const

この操作コンテキストの一意の識別子を返します。

各 ID は、アプリケーションの存続期間中、すべてのチャネルにわたって一意です。

この関数は Qt 6.11 で導入されました。

QMetaType QGrpcOperationContext::responseMetaType() const

RPC 結果メッセージのメタタイプを返します。

setResponseMetaType()も参照してください 。

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

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

[noexcept, since 6.10] const QMultiHash<QByteArray, QByteArray> &QGrpcOperationContext::serverInitialMetadata() const &

レスポンスメッセージが送信される前に、サーバーから受信した初期メタデータを返します。

初期メタデータは、接続が確立された直後にサーバーから送信されます。これには、コールのコンテキストを提供するキーと値のペアが含まれる場合があります。

注: grpc- またはqtgrpc- というプレフィックスを持つキーは 、 gRPC™ およびQtGrpc によって予約されています。これらを使用したエントリは、リクエストの構築時に無視されます。具体的なチャネルによっては、さらなる制限が課される場合があります。QGrpcHttp2Channel#Reserved metadata keys を参照してください。

注:この メソッドは、QGrpcOperation によって暗黙的に使用されます。

この関数は Qt 6.10 で導入されました。

関連項目: setServerInitialMetadata()、QGrpcOperation::serverInitialMetadata()、およびserverTrailingMetadata()。

[private signal, since 6.11] void QGrpcOperationContext::serverInitialMetadataReceived(const QMultiHash<QByteArray, QByteArray> &metadata)

このシグナルは、サーバーが初期メタデータを含む応答を返したときに発信されます。サーバーからの初期メタデータは、RPCの初期応答の前にクライアントに送信されます。

受信したメタデータは `metadata ` に格納されており、`serverInitialMetadata()` を通じて取得することもできます。

注:これは プライベートシグナルです。シグナル接続では使用できますが、ユーザーが発行することはできません。

この関数は Qt 6.11 で導入されました。

QGrpcOperation::serverInitialMetadataReceived およびQGrpcBidiStream::writesDoneも参照してください 。

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

この関数は、バージョン 6.13 で非推奨となる予定です。

代わりに、serverInitialMetadata() およびserverTrailingMetadata() を使用してください。

レスポンスメッセージが送信される前に、サーバーから受信した初期メタデータを返します。

初期メタデータは、呼び出しが確立された直後にサーバーから送信されます。これには、呼び出しのコンテキストを提供するキーと値のペアが含まれる場合があります。

注: grpc- またはqtgrpc- というプレフィックスを持つキーは 、gRPC およびQtGrpc によって予約されています。これらを使用したエントリは、リクエストの構築時に無視されます。具体的なチャネルによっては、さらに制限が課される場合があります。QGrpcHttp2Channel#Reserved metadata keys を参照してください。

注:この メソッドは、QGrpcOperation によって暗黙的に使用されます。

setServerMetadata()、serverInitialMetadata()、およびQGrpcOperation::serverInitialMetadata()も参照してください 。

[noexcept, since 6.10] const QMultiHash<QByteArray, QByteArray> &QGrpcOperationContext::serverTrailingMetadata() const &

すべての応答メッセージの後に、サーバーから受信した末尾のメタデータを返します。

末尾のメタデータは、すべての応答メッセージの送信が完了し、RPCが終了する直前に、サーバーから一度だけ送信されます。これには、完了した呼び出しに関する追加のコンテキストを提供するキーと値のペアが含まれる場合があります。

注: grpc- またはqtgrpc- という接頭辞を持つキーは 、gRPC およびQtGrpc によって予約されています。これらを使用したエントリは、リクエストの構築時に無視されます。具体的なチャネルによっては、さらなる制限が課される場合があります。QGrpcHttp2Channel#Reserved metadata keys を参照してください。

注: この メソッドは、QGrpcOperation によって暗黙的に使用されます。

この関数は Qt 6.10 で導入されました。

QGrpcOperation::serverTrailingMetadata() およびsetServerTrailingMetadata()も参照してください 。

[noexcept] QLatin1StringView QGrpcOperationContext::service() const

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

void QGrpcOperationContext::setResponseMetaType(QMetaType metaType)

RPC結果メッセージのmetaType を保存します。

responseMetaType()も参照してください 。

[since 6.10] void QGrpcOperationContext::setServerInitialMetadata(QMultiHash<QByteArray, QByteArray> &&metadata)

RPCの開始時にサーバーから受信したmetadata を設定します。

この関数はQt 6.10で導入されました。

serverInitialMetadata()も参照してください 。

[until 6.13] void QGrpcOperationContext::setServerMetadata(QHash<QByteArray, QByteArray> &&metadata)

[until 6.13] void QGrpcOperationContext::setServerMetadata(const QHash<QByteArray, QByteArray> &metadata)

この関数は、バージョン 6.13 で非推奨となる予定です。

代わりに `setServerInitialMetadata()` を使用してください。

RPCの開始時にサーバーから受信したメタデータを設定します。

setServerInitialMetadata()も参照してください 。

[since 6.10] void QGrpcOperationContext::setServerTrailingMetadata(QMultiHash<QByteArray, QByteArray> &&metadata)

すべての応答メッセージの後に、サーバーから受信した末尾のmetadata を設定します。

この関数は Qt 6.10 で導入されました。

serverTrailingMetadata()も参照してください 。

[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も参照してください 。

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