Sur cette page

QGrpcOperationContext Class

La classe QGrpcOperationContext fournit un contexte pour la communication entre une opération individuelle et un canal. gRPC et un canal. Plus d'informations...

En-tête : #include <QGrpcOperationContext>
CMake : find_package(Qt6 REQUIRED COMPONENTS Grpc)
target_link_libraries(mytarget PRIVATE Qt6::Grpc)
Depuis : Qt 6.7
Hérite : QObject

Fonctions publiques

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)

Signaux

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()

Description détaillée

QGrpcOperationContext est construit en interne lorsqu'un appel de procédure à distance (RPC) est demandé. Il assure la médiation entre la demande d'opération du client et le résultat de l'opération du canal.

Les RPC demandés sur l'interface client renvoient des spécialisations de QGrpcOperation, telles que QGrpcCallReply, QGrpcServerStream, QGrpcClientStream ou QGrpcBidiStream. Ces classes sont implicitement intégrées à la contrepartie QGrpcOperationContext sous-jacente.

Note : N'utilisez pas cette classe directement à moins d'implémenter un canal personnalisé.

Les signaux contenus dans cette classe sont utilisés pour établir la communication entre le client QGrpcOperation et l'implémentation QAbstractGrpcChannel. Ces opérations sont de nature asynchrone et plusieurs RPC peuvent opérer simultanément sur le même canal. Les canaux traitent généralement toutes les opérations de la même manière, et il est de la responsabilité du canal de prendre correctement en charge et de restreindre le sous-ensemble de fonctionnalités que son type RPC prend en charge.

Les signaux qui ne doivent être émis que par l'implémentation du canal sont les suivants :

Les signaux qui seront émis par QGrpcOperation et ses spécialisations sont les suivants :

Les implémentations personnalisées de QAbstractGrpcChannel doivent gérer les signaux du client, car aucune gestion des signaux par défaut n'est fournie, et émettre leurs propres signaux en conséquence.

Documentation des fonctions membres

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

Détruit le contexte de l'opération.

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

Renvoie les options d'appel utilisées par ce contexte d'opération.

Pour les options applicables à l'ensemble du canal, voir QGrpcChannelOptions.

[signal] void QGrpcOperationContext::cancelRequested()

Ce signal est émis par QGrpcOperation lorsqu'il demande l'annulation de la communication.

Le canal est censé connecter sa logique d'annulation à ce signal et tenter d'annuler la RPC et de la terminer avec un code d'état Cancelled. Le succès de l'annulation ne peut être garanti. Le traitement ultérieur des données reçues d'un canal n'est pas nécessaire et doit être évité.

Voir également QGrpcOperation::cancel.

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

Renvoie l'adresse QtGrpc::RpcDescriptor pour ce contexte d'opération.

Cette fonction a été introduite dans Qt 6.11.

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

Ce signal doit être émis par le canal lorsqu'une RPC se termine.

Cela signifie généralement que le serveur a envoyé un status pour la RPC demandée et a fermé la connexion. Les implémentations de QAbstractGrpcChannel doivent détecter cette situation et émettre le signal.

Après réception de ce signal, aucune autre communication ne doit avoir lieu par le biais de ce contexte d'opération. Le client peut alors supprimer en toute sécurité l'objet RPC correspondant.

Remarque : ce signal est implicitement connecté à son homologue QGrpcOperation.

Voir également QGrpcOperation::finished.

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

Ce signal doit être émis par le canal lorsqu'un nouveau morceau de data est reçu du serveur.

Pour les flux de clients et les appels unaires, cela signifie que la réponse unique et finale est arrivée et que la communication est sur le point de se terminer.

Pour le serveur et les flux bidirectionnels, ce signal doit être émis en continu par le canal à la réception de chaque nouveau message.

Remarque : ce signal est implicitement connecté à son homologue QGrpcOperation.

Voir également QGrpcServerStream::messageReceived et QGrpcBidiStream::messageReceived.

[noexcept] QLatin1StringView QGrpcOperationContext::method() const

Renvoie le nom de la méthode du service associé à ce contexte opérationnel.

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

Renvoie l'identifiant unique de ce contexte d'opération.

Chaque identifiant est unique pour tous les canaux pendant toute la durée de vie de l'application.

Cette fonction a été introduite dans Qt 6.11.

QMetaType QGrpcOperationContext::responseMetaType() const

Renvoie le méta type du message de résultat RPC.

Voir aussi setResponseMetaType().

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

Retourne le sérialiseur de ce contexte d'opération

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

Renvoie les métadonnées initiales reçues du serveur avant tout message de réponse.

Les métadonnées initiales sont envoyées par le serveur immédiatement après l'établissement de l'appel. Elles peuvent inclure des paires clé-valeur qui fournissent le contexte de l'appel.

Remarque : QGrpcHttp2Channel transporte les métadonnées sous forme d'en-têtes HTTP/2. Les clés sont des chaînes ASCII insensibles à la casse. Vous devez éviter d'utiliser les préfixes internes : : (pseudo-en-tête), grpc- ou qtgrpc-. Les valeurs peuvent être des chaînes ASCII ou des données binaires. Pour plus d'informations, voir RFC 7540, section 8.1.2.

Note : Cette méthode est utilisée implicitement par QGrpcOperation.

Cette fonction a été introduite dans Qt 6.10.

Voir aussi setServerInitialMetadata(), QGrpcOperation::serverInitialMetadata(), et serverTrailingMetadata().

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

Ce signal est émis lorsque le serveur répond avec ses métadonnées initiales. Les métadonnées initiales du serveur sont envoyées au client avant la réponse initiale d'une RPC.

Les métadonnées reçues sont fournies dans metadata et sont également disponibles via serverInitialMetadata().

Remarque : il s'agit d'un signal privé. Il peut être utilisé dans des connexions de signaux mais ne peut pas être émis par l'utilisateur.

Cette fonction a été introduite dans Qt 6.11.

Voir aussi QGrpcOperation::serverInitialMetadataReceived et QGrpcBidiStream::writesDone.

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

Cette fonction sera obsolète à partir de la version 6.13.

Utilisez serverInitialMetadata() et serverTrailingMetadata() à la place.

Renvoie les métadonnées initiales reçues du serveur avant tout message de réponse.

Les métadonnées initiales sont envoyées par le serveur immédiatement après l'établissement de l'appel. Elles peuvent inclure des paires clé-valeur qui fournissent le contexte de l'appel.

Remarque : QGrpcHttp2Channel transporte les métadonnées sous forme d'en-têtes HTTP/2. Les clés sont des chaînes ASCII insensibles à la casse. Vous devez éviter d'utiliser les préfixes internes : : (pseudo-en-tête), grpc- ou qtgrpc-. Les valeurs peuvent être des chaînes ASCII ou des données binaires. Pour plus d'informations, voir RFC 7540, section 8.1.2.

Note : Cette méthode est utilisée implicitement par QGrpcOperation.

Voir également setServerMetadata(), serverInitialMetadata() et QGrpcOperation::serverInitialMetadata().

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

Renvoie les métadonnées de suivi reçues du serveur après tous les messages de réponse.

Les métadonnées de suivi sont envoyées uniquement par le serveur une fois que tous les messages de réponse ont été envoyés et juste avant que la RPC ne se termine. Elles peuvent inclure des paires clé-valeur fournissant un contexte supplémentaire sur l'appel terminé.

Remarque : QGrpcHttp2Channel transporte les métadonnées sous forme d'en-têtes HTTP/2. Les clés sont des chaînes ASCII insensibles à la casse. Vous devez éviter d'utiliser les préfixes internes : : (pseudo-en-tête), grpc- ou qtgrpc-. Les valeurs peuvent être des chaînes ASCII ou des données binaires. Pour plus d'informations, voir RFC 7540, section 8.1.2.

Note : Cette méthode est utilisée implicitement par QGrpcOperation.

Cette fonction a été introduite dans Qt 6.10.

Voir aussi QGrpcOperation::serverTrailingMetadata() et setServerTrailingMetadata().

[noexcept] QLatin1StringView QGrpcOperationContext::service() const

Renvoie le nom du service associé à ce contexte d'opération.

void QGrpcOperationContext::setResponseMetaType(QMetaType metaType)

Enregistre l'adresse metaType du message de résultat RPC.

Voir aussi responseMetaType().

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

Définit l'adresse metadata reçue du serveur au début de la RPC.

Cette fonction a été introduite dans Qt 6.10.

Voir aussi serverInitialMetadata().

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

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

Cette fonction sera obsolète à partir de la version 6.13.

Utilisez setServerInitialMetadata() à la place.

Définit les métadonnées reçues du serveur au début de la RPC.

Voir aussi setServerInitialMetadata().

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

Définit le metadata reçu du serveur après tous les messages de réponse.

Cette fonction a été introduite dans Qt 6.10.

Voir aussi serverTrailingMetadata().

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

Ce signal est émis par QGrpcClientStream ou QGrpcBidiStream lorsqu'il a sérialisé data et qu'il est prêt à être transmis à un canal.

Le canal est censé connecter sa logique d'écriture à ce signal et envelopper les données sérialisées dans des en-têtes liés au canal avant de les écrire sur le fil.

Voir également QGrpcClientStream::writeMessage et QGrpcBidiStream::writeMessage.

[signal] void QGrpcOperationContext::writesDoneRequested()

Ce signal est émis par QGrpcClientStream ou QGrpcBidiStream pour indiquer qu'il a fini d'écrire des messages. Le canal doit répondre à ce signal en fermant à moitié le flux.

Remarque : après réception de ce signal, aucune opération d'écriture n'est plus autorisée pour les RPC de streaming. Le serveur peut toujours envoyer des messages, qui doivent être transmis à l'aide de messageReceived().

Voir également QGrpcClientStream::writesDone et 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.