QGrpcOperationContext Class
La classe QGrpcOperationContext fournit un contexte pour la communication entre une opération individuelle gRPC™ opération et un canal. En savoir plus…
| 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 de : | 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 instancié en interne lorsqu'un appel de procédure à distance (RPC) est demandé, assurant la médiation entre la requête 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 à leur équivalent sous-jacent `QGrpcOperationContext`.
Remarque : n’ utilisezpas cette classe directement, sauf si vous implémentez un canal personnalisé.
Les signaux contenus dans cette classe servent à établir la communication entre l’ QGrpcOperation, qui fait face au client, et l’implémentation de QAbstractGrpcChannel. Ces opérations sont de nature asynchrone, et plusieurs RPC peuvent fonctionner simultanément sur le même canal. En règle générale, les canaux traitent toutes les opérations de la même manière, et il incombe au canal de prendre correctement en charge et de restreindre le sous-ensemble de fonctionnalités pris en charge par son type de RPC.
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 par défaut des signaux n’est fournie, et émettre leurs propres signaux en conséquence.
Documentation des fonctions membres
[override virtual noexcept] QGrpcOperationContext::~QGrpcOperationContext()
Détruit le contexte d'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, consultez QGrpcChannelOptions.
[signal] void QGrpcOperationContext::cancelRequested()
Ce signal est émis par QGrpcOperation lorsqu'il demande l'annulation de la communication.
Le canal doit connecter sa logique d’annulation à ce signal et tenter d’annuler l’appel RPC, puis le terminer avec un code d’état « Cancelled ». La réussite de l’annulation ne peut être garantie. Tout traitement supplémentaire 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'QtGrpc::RpcDescriptor e 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'un RPC s'achève.
Cela signifie généralement que le serveur a envoyé une réponse « status » pour le RPC demandé 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 via ce contexte d’opération. Le client peut alors supprimer en toute sécurité l’objet RPC correspondant.
Remarque : ce signal est implicitement lié à son équivalent « QGrpcOperation ».
Voir également QGrpcOperation::finished.
[signal] void QGrpcOperationContext::messageReceived(const QByteArray &data)
Ce signal doit être émis par le canal lorsqu'un nouveau bloc d'data s est reçu du serveur.
Pour les flux client 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 les flux serveur et bidirectionnels, ce signal doit être émis en continu par le canal à la réception de chaque nouveau message.
Remarque : ce signal est implicitement lié à 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 d'opération.
[noexcept, since 6.11] quint64 QGrpcOperationContext::operationId() const
Renvoie l'identifiant unique de ce contexte d'opération.
Chaque identifiant est unique sur 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 également setResponseMetaType().
std::shared_ptr<const QAbstractProtobufSerializer> QGrpcOperationContext::serializer() const
Renvoie 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 fournissant le contexte de l'appel.
Remarque : les clés préfixées par « grpc- » ou « qtgrpc- » sont réservées par gRPC™ et QtGrpc. Les entrées fournies qui les utilisent sont ignorées lors de la construction de la requête. Certains canaux concrets peuvent imposer des restrictions supplémentaires ; voir QGrpcHttp2Channel#Reserved metadata keys.
Remarque : cette méthode est utilisée implicitement par QGrpcOperation.
Cette fonction a été introduite dans Qt 6.10.
Voir également 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 renvoie ses métadonnées initiales. Les métadonnées initiales du serveur sont envoyées au client avant la réponse initiale d'un 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 les connexions de signaux, mais ne peut pas être émis par l'utilisateur.
Cette fonction a été introduite dans Qt 6.11.
Voir également 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 plutôt serverInitialMetadata() et serverTrailingMetadata().
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 la connexion. Elles peuvent inclure des paires clé-valeur fournissant le contexte de la connexion.
Remarque : les clés préfixées par grpc- ou qtgrpc- sont réservées par gRPC et QtGrpc. Les entrées les utilisant sont ignorées lors de la construction de la requête. Certains canaux peuvent imposer des restrictions supplémentaires ; voir QGrpcHttp2Channel#Reserved metadata keys.
Remarque : 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 fin reçues du serveur après tous les messages de réponse.
Les métadonnées de fin ne sont envoyées par le serveur qu’une fois tous les messages de réponse transmis et juste avant la fin de l’appel RPC. Elles peuvent inclure des paires clé-valeur fournissant des informations contextuelles supplémentaires sur l’appel terminé.
Remarque : les clés préfixées par « grpc- » ou « qtgrpc- » sont réservées par gRPC et QtGrpc. Les entrées les utilisant sont ignorées lors de la construction de la requête. Certains canaux peuvent imposer des restrictions supplémentaires ; voir QGrpcHttp2Channel#Reserved metadata keys.
Remarque : cette méthode est utilisée implicitement par QGrpcOperation.
Cette fonction a été introduite dans Qt 6.10.
Voir également 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'metaType du message de résultat RPC.
Voir également responseMetaType().
[since 6.10] void QGrpcOperationContext::setServerInitialMetadata(QMultiHash<QByteArray, QByteArray> &&metadata)
Définit l'metadata e reçue du serveur au début de la communication RPC.
Cette fonction a été introduite dans Qt 6.10.
Voir aussi serverInitialMetadata().
[until 6.13] void QGrpcOperationContext::setServerMetadata(QHash<QByteArray, QByteArray> &&metadata)
[until 6.13] void QGrpcOperationContext::setServerMetadata(const QHash<QByteArray, QByteArray> &metadata)
Cette fonction sera obsolète à partir de la version 6.13.
Utilisez plutôt ` setServerInitialMetadata()`.
Définit les métadonnées reçues du serveur au début de la communication RPC.
Voir également setServerInitialMetadata().
[since 6.10] void QGrpcOperationContext::setServerTrailingMetadata(QMultiHash<QByteArray, QByteArray> &&metadata)
Définit l'metadata e de fin 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 lorsque les données sérialisées data sont prêtes à être transmises par un canal.
Le canal doit connecter sa logique d'écriture à ce signal et encapsuler les données sérialisées dans des en-têtes spécifiques au canal avant de les transmettre sur le réseau.
Voir également QGrpcClientStream::writeMessage et QGrpcBidiStream::writeMessage.
[signal] void QGrpcOperationContext::writesDoneRequested()
Ce signal est émis par ` QGrpcClientStream ` ou ` QGrpcBidiStream ` pour indiquer que l'écriture des messages est terminée. Le canal doit répondre à ce signal en effectuant une demi-fermeture du flux.
Remarque : après la réception de ce signal, aucune opération d’écriture n’est plus autorisée pour les RPC en flux. Le serveur peut toujours envoyer des messages, qui doivent être transférés à 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.