Sur cette page

QGrpcChannelOptions Class

La classe `QGrpcChannelOptions` propose diverses options permettant de paramétrer avec précision un canal gRPC. En savoir plus...

En-tête : #include <QGrpcChannelOptions>
CMake : find_package(Qt6 REQUIRED COMPONENTS Grpc)
target_link_libraries(mytarget PRIVATE Qt6::Grpc)
Depuis : Qt 6.6
En QML : GrpcChannelOptions

Comparaisons entre les options de QGrpcChannel

CatégorieTypes comparables
égalitéQGrpcChannelOptions

Fonctions publiques

QGrpcChannelOptions()
QGrpcChannelOptions(const QGrpcChannelOptions &other)
QGrpcChannelOptions(QGrpcChannelOptions &&other)
~QGrpcChannelOptions()
(since 6.12) QtGrpc::CompressionAlgorithms acceptedCompressionAlgorithms() const
(since 6.10) QGrpcChannelOptions &addMetadata(QByteArrayView key, QByteArrayView value)
std::optional<std::chrono::milliseconds> deadlineTimeout() const
(since 6.11) std::optional<bool> filterServerMetadata() const
(since 6.12) std::optional<quint64> maximumReceiveMessageSize() const
(until 6.13) QHash<QByteArray, QByteArray> metadata() &&
(until 6.13) const QHash<QByteArray, QByteArray> &metadata() const &
(since 6.10) QMultiHash<QByteArray, QByteArray> metadata(QtGrpc::MultiValue_t) &&
(since 6.10) const QMultiHash<QByteArray, QByteArray> &metadata(QtGrpc::MultiValue_t) const &
(since 6.12) std::optional<QtGrpc::CompressionAlgorithm> requestCompression() const
(since 6.8) QGrpcSerializationFormat serializationFormat() const
(since 6.12) QGrpcChannelOptions &setAcceptedCompressionAlgorithms(QtGrpc::CompressionAlgorithms algorithms)
QGrpcChannelOptions &setDeadlineTimeout(std::chrono::milliseconds timeout)
(since 6.11) QGrpcChannelOptions &setFilterServerMetadata(bool value)
(since 6.12) QGrpcChannelOptions &setMaximumReceiveMessageSize(quint64 size)
(until 6.13) QGrpcChannelOptions &setMetadata(QHash<QByteArray, QByteArray> &&metadata)
(since 6.10) QGrpcChannelOptions &setMetadata(QMultiHash<QByteArray, QByteArray> &&metadata)
(until 6.13) QGrpcChannelOptions &setMetadata(const QHash<QByteArray, QByteArray> &metadata)
(since 6.10) QGrpcChannelOptions &setMetadata(const QMultiHash<QByteArray, QByteArray> &metadata)
(since 6.10) QGrpcChannelOptions &setMetadata(std::initializer_list<std::pair<QByteArray, QByteArray>> list)
(since 6.12) QGrpcChannelOptions &setRequestCompression(QtGrpc::CompressionAlgorithm algorithm)
(since 6.8) QGrpcChannelOptions &setSerializationFormat(const QGrpcSerializationFormat &format)
QGrpcChannelOptions &setSslConfiguration(const QSslConfiguration &sslConfiguration)
std::optional<QSslConfiguration> sslConfiguration() const
(since 6.8) void swap(QGrpcChannelOptions &other)
(since 6.8) operator QVariant() const
QGrpcChannelOptions &operator=(QGrpcChannelOptions &&other)
QGrpcChannelOptions &operator=(const QGrpcChannelOptions &other)

Membres publics statiques

(since 6.12) QtGrpc::CompressionAlgorithms supportedCompressionAlgorithms()
(since 6.11) bool operator!=(const QGrpcChannelOptions &lhs, const QGrpcChannelOptions &rhs)
(since 6.8) QDebug operator<<(QDebug debug, const QGrpcChannelOptions &chOpts)
(since 6.11) bool operator==(const QGrpcChannelOptions &lhs, const QGrpcChannelOptions &rhs)

Description détaillée

QGrpcChannelOptions vous permet de personnaliser un gRPC™ canal. Certaines options s'appliquent à tous les appels de procédure à distance (RPC) effectués sur le canal associé, qui sert à communiquer avec les services.

Pour remplacer les options de RPC spécifiques, utilisez ` QGrpcCallOptions`.

QGrpcChannelOptions channelOpts;
// Appliquer des métadonnées communes à chaque RPC
channelOpts.setMetadata({
    { "header" , "value1" },
    { "header" , "value2" },
});
const auto &md = channelOpts.metadata(QtGrpc::MultiValue);
qDebug() << "Channel Metadata: " << md;

// Appliquer un délai de 2 secondes à chaque appel RPC
channelOpts.setDeadlineTimeout(2s);
qDebug() << "Channel timeout: " << channelOpts.deadlineTimeout();

// Configurer les paramètres SSL/TLS
channelOpts.setSslConfiguration(QSslConfiguration());

Remarque : il appartient à l'implémentation du canal de déterminer les détails de ces options.

Documentation des fonctions membres

QGrpcChannelOptions::QGrpcChannelOptions()

Construit par défaut un objet `QGrpcChannelOptions` vide.

QGrpcChannelOptions::QGrpcChannelOptions(const QGrpcChannelOptions &other)

Recrée un objet `QGrpcChannelOptions` à partir de ` other`.

[constexpr noexcept default] QGrpcChannelOptions::QGrpcChannelOptions(QGrpcChannelOptions &&other)

La fonction « move » construit un nouvel objet `QGrpcChannelOptions` à partir de ` other`.

Remarque : l’objet d’origine other est placé dans un état partiellement formé, dans lequel les seules opérations valides sont la destruction et l’affectation d’une nouvelle valeur.

[noexcept] QGrpcChannelOptions::~QGrpcChannelOptions()

Supprime l'QGrpcChannelOptions.

[since 6.12] QtGrpc::CompressionAlgorithms QGrpcChannelOptions::acceptedCompressionAlgorithms() const

Renvoie les algorithmes de compression que ce canal est prêt à accepter de la part du serveur. L'ensemble contient toujours « Identity », car la spécification « gRPC » impose l'acceptation des messages non compressés.

Cette valeur est utilisée pour construire l’en-tête de requête « grpc-accept-encoding ». Si le serveur répond avec un algorithme de compression qui ne figure pas dans cet ensemble, l’appel se termine par un code d’état « Unimplemented ».

Par défaut, il s'agit de ` supportedCompressionAlgorithms()` : tous les algorithmes que la version actuelle de Qt est capable de négocier sont proposés.

Cette fonction a été introduite dans Qt 6.12.

Voir également setAcceptedCompressionAlgorithms() et supportedCompressionAlgorithms().

[since 6.10] QGrpcChannelOptions &QGrpcChannelOptions::addMetadata(QByteArrayView key, QByteArrayView value)

Ajoute key et value au fichier metadata si cette paire exacte n'y figure pas déjà. Une même clé peut apparaître plusieurs fois avec des valeurs différentes.

Remarque : les clés préfixées par grpc- ou qtgrpc- sont réservées par gRPC et QtGrpc. Les entrées fournies utilisant ces préfixes 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 : ces métadonnées sont incluses dans chaque appel RPC effectué via le canal. Les métadonnées du canal sont fusionnées avec les métadonnées spécifiques à l'appel lorsque celui-ci démarre — voir QGrpcCallOptions::addMetadata()

Cette fonction a été introduite dans Qt 6.10.

Voir également metadata() et setMetadata().

[noexcept] std::optional<std::chrono::milliseconds> QGrpcChannelOptions::deadlineTimeout() const

Renvoie la durée du délai d'expiration utilisée pour calculer la date limite du canal.

Si ce champ n'est pas défini, renvoie un objet ` std::optional` vide.

Voir aussi setDeadlineTimeout().

[noexcept, since 6.11] std::optional<bool> QGrpcChannelOptions::filterServerMetadata() const

Renvoie « true » si les métadonnées du serveur liées au protocole sont exclues du résultat. Renvoie « false » pour inclure toutes les métadonnées reçues du serveur.

Si ce champ n’est pas défini, renvoie un ` std::optional` vide.

Cette fonction a été introduite dans Qt 6.11.

Voir également setFilterServerMetadata() et QGrpcCallOptions::filterServerMetadata().

[since 6.12] std::optional<quint64> QGrpcChannelOptions::maximumReceiveMessageSize() const

Renvoie la taille maximale autorisée, en octets, d'un message gRPC entrant. Cette limite s'applique à la charge utile de la trame gRPC décodée, après le déchiffrement au niveau du transport et toute décompression spécifique au message.

Si la valeur n'est pas spécifiée, renvoie un objet ` std::optional` vide.

Par défaut, la valeur n’est pas spécifiée.

Remarque : ` QGrpcHttp2Channel ` utilise la variable d’environnement ` QT_GRPC_MAXIMUM_RECEIVE_MESSAGE_SIZE ` comme valeur de secours lorsque cette option n’est pas définie explicitement. Si la variable d’environnement n’est pas définie, la valeur par défaut intégrée de ` 4 ` MiB est utilisée. Voir l{Valeurs de secours des variables d’environnement}.

Cette fonction a été introduite dans Qt 6.12.

Voir également setMaximumReceiveMessageSize() et QGrpcCallOptions::maximumReceiveMessageSize().

[until 6.13] QHash<QByteArray, QByteArray> QGrpcChannelOptions::metadata() &&

[noexcept, until 6.13] const QHash<QByteArray, QByteArray> &QGrpcChannelOptions::metadata() const &

Cette fonction est prévue pour être obsolète dans la version 6.13.

Utilisez plutôt ` metadata` (QtGrpc::MultiValue).

Renvoie les métadonnées. Si ce champ n'est pas défini, renvoie des métadonnées vides.

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.

Voir également metadata(QtGrpc::MultiValue_t) et setMetadata().

[since 6.10] QMultiHash<QByteArray, QByteArray> QGrpcChannelOptions::metadata(QtGrpc::MultiValue_t) &&

[noexcept, since 6.10] const QMultiHash<QByteArray, QByteArray> &QGrpcChannelOptions::metadata(QtGrpc::MultiValue_t) const &

Renvoie les métadonnées. Si ce champ n'est pas défini, renvoie des métadonnées vides.

Remarque : les clés préfixées par « grpc- » ou « qtgrpc- » sont réservées par gRPC et QtGrpc. Les entrées fournies utilisant ces préfixes sont ignorées lors de la construction de la requête. Certains canaux peuvent imposer des restrictions supplémentaires ; voir QGrpcHttp2Channel#Reserved metadata keys. Les valeurs multiples par clé sont prises en charge.

const auto &md = opts.metadata(QtGrpc::MultiValue);

Ces fonctions ont été introduites dans Qt 6.10.

Voir également setMetadata.

[since 6.12] std::optional<QtGrpc::CompressionAlgorithm> QGrpcChannelOptions::requestCompression() const

Renvoie l'algorithme de compression utilisé pour compresser les messages sortants sur ce canal ou cet appel.

Si ce champ n'est pas défini, renvoie un objet ` std::optional` vide.

Cette fonction a été introduite dans Qt 6.12.

Voir également ` setRequestCompression()` et ` QGrpcCallOptions::requestCompression()`.

[since 6.8] QGrpcSerializationFormat QGrpcChannelOptions::serializationFormat() const

Renvoie le format de sérialisation utilisé par le canal.

Si ce champ n'est pas défini, renvoie un format de sérialisation construit par l'Default.

Cette fonction a été introduite dans Qt 6.8.

Voir aussi ` setSerializationFormat()`.

[since 6.12] QGrpcChannelOptions &QGrpcChannelOptions::setAcceptedCompressionAlgorithms(QtGrpc::CompressionAlgorithms algorithms)

Définit l'algorithms de compression acceptée et renvoie une référence à l'objet mis à jour.

Identity est toujours ajouté implicitement, car la spécification gRPC exige que les clients acceptent les messages non compressés.

Si {QtGrpc::CompressionAlgorithm::Identity} est le seul algorithme accepté, les réponses compressées sont refusées. L’ajout d’indicateurs supplémentaires permet au serveur de répondre en utilisant ces algorithmes de compression.

Seuls les algorithmes pris en charge par cette version de Qt et inclus dans ` algorithms ` sont signalés au serveur comme méthodes de compression de réponse acceptées. Les indicateurs qui ne figurent pas dans ` supportedCompressionAlgorithms()` sont ignorés sans message d’erreur.

Cette fonction a été introduite dans Qt 6.12.

Voir également acceptedCompressionAlgorithms() et supportedCompressionAlgorithms().

QGrpcChannelOptions &QGrpcChannelOptions::setDeadlineTimeout(std::chrono::milliseconds timeout)

Définit l'timeout et renvoie une référence à l'objet mis à jour.

Un délai fixe la durée maximale pendant laquelle un client est prêt à attendre une réponse d’un serveur. Le délai réel est calculé en ajoutant l’ timeout à l’heure de début du RPC.

Le délai s'applique à toute la durée de vie d'un RPC, ce qui inclut la réception de l'QGrpcStatus finale d'un appel lancé précédemment ; il peut donc s'avérer indésirable pour les flux (de longue durée).

Remarque : la configuration de ce champ s’applique à tous les RPC opérant sur le canal, à l’exception de ceux qui sont redéfinis par ` QGrpcCallOptions::setDeadlineTimeout()`

Voir également ` deadlineTimeout()`.

[since 6.11] QGrpcChannelOptions &QGrpcChannelOptions::setFilterServerMetadata(bool value)

Si la valeur de « value » est « true », les métadonnées liées au protocole définies par le transport gRPC (telles que les clés réservées grpc- ) seront exclues. Si la valeur de « value » est « false », toutes les métadonnées reçues du serveur seront incluses.

Remarque : la configuration de ce champ s’applique à tous les RPC opérant sur le canal, à l’exception de ceux redéfinis par QGrpcCallOptions::filterServerMetadata

Cette fonction a été introduite dans Qt 6.11.

Voir également filterServerMetadata() et QGrpcCallOptions::setFilterServerMetadata().

[since 6.12] QGrpcChannelOptions &QGrpcChannelOptions::setMaximumReceiveMessageSize(quint64 size)

Définit la taille maximale de l'size e des messages entrants en octets et renvoie une référence à l'objet mis à jour.

Les messages dépassant cette limite sont rejetés avec un message d’ StatusCode::ResourceExhausted avant que leur charge utile ne soit mise en mémoire tampon. La valeur est utilisée telle quelle ; ainsi, une size de type 0 n’accepte que les messages vides.

Remarque : les implémentationsconcrètes des canaux peuvent imposer une limite supérieure stricte à la limite effective. Le transport QGrpcHttp2Channel plafonne la valeur à la charge utile maximale d’une trame gRPC sur HTTP/2 (2^32 - 1) en octets, ou au maximum de qsizetype moins l’en-tête de trame gRPC de 5 octets sur les plateformes 32 bits. Toute valeur configurée supérieure est limitée à ce plafond.

Remarque : la configuration de ce champ s’applique à tous les RPC fonctionnant sur le canal, à l’exception de ceux redéfinis par ` QGrpcCallOptions::setMaximumReceiveMessageSize()`

Cette fonction a été introduite dans Qt 6.12.

Voir également ` maximumReceiveMessageSize()` et ` QGrpcCallOptions::setMaximumReceiveMessageSize()`.

[until 6.13] QGrpcChannelOptions &QGrpcChannelOptions::setMetadata(QHash<QByteArray, QByteArray> &&metadata)

[until 6.13] QGrpcChannelOptions &QGrpcChannelOptions::setMetadata(const QHash<QByteArray, QByteArray> &metadata)

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

Utilisez plutôt la surcharge de la fonction ` QMultiHash `.

Définit le paramètre « metadata » et renvoie une référence à l'objet mis à jour.

Remarque : les clés préfixées par « grpc- » ou « qtgrpc- » sont réservées par gRPC et QtGrpc. Les entrées fournies utilisant ces préfixes 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 : ces métadonnées sont incluses dans chaque appel RPC effectué via le canal. Les métadonnées du canal sont fusionnées avec les métadonnées spécifiques à l’appel lorsque celui-ci démarre — voir QGrpcCallOptions::setMetadata(QMultiHash)

Voir également metadata().

[since 6.10] QGrpcChannelOptions &QGrpcChannelOptions::setMetadata(QMultiHash<QByteArray, QByteArray> &&metadata)

[since 6.10] QGrpcChannelOptions &QGrpcChannelOptions::setMetadata(const QMultiHash<QByteArray, QByteArray> &metadata)

[since 6.10] QGrpcChannelOptions &QGrpcChannelOptions::setMetadata(std::initializer_list<std::pair<QByteArray, QByteArray>> list)

Définit la propriété « metadata » et renvoie une référence à l'objet mis à jour.

Remarque : les clés préfixées par « grpc- » ou « qtgrpc- » sont réservées par gRPC et QtGrpc. Les entrées fournies utilisant ces préfixes 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. Les valeurs multiples par clé sont prises en charge.

Remarque : ces métadonnées sont incluses dans chaque appel RPC effectué via le canal. Les métadonnées du canal sont fusionnées avec les métadonnées spécifiques à l’appel lorsque le RPC démarre — voir QGrpcCallOptions::setMetadata(QMultiHash)

Ces fonctions ont été introduites dans Qt 6.10.

Voir également metadata(QtGrpc::MultiValue_t).

[since 6.12] QGrpcChannelOptions &QGrpcChannelOptions::setRequestCompression(QtGrpc::CompressionAlgorithm algorithm)

Définit l'algorithm de compression utilisée pour compresser les messages envoyés par le client et renvoie une référence à l'objet mis à jour.

Une fois défini, l’algorithme est indiqué dans l’en-tête de requête « grpc-encoding ». Chaque message est compressé indépendamment ; si la compression ne réduit pas la taille de la charge utile, le message est envoyé non compressé, la valeur de « Compressed-Flag » étant alors définie sur « 0 » quoi qu’il arrive.

Remarque : la compression de messages contenant à la fois des données sensibles et des données susceptibles d’être influencées par un attaquant peut exposer la connexion à des attaques par canal latéral de compression telles que CRIME ou BREACH. Dans la mesure du possible, évitez de compresser de tels messages, ou séparez les données sensibles et non fiables en différentes requêtes.

Remarque : la configuration de ce champ s’applique à tous les appels RPC opérant sur le canal, à l’exception de ceux redéfinis par QGrpcCallOptions::setRequestCompression()

Cette fonction a été introduite dans Qt 6.12.

Voir également ` requestCompression()` et ` QGrpcCallOptions::setRequestCompression()`.

[since 6.8] QGrpcChannelOptions &QGrpcChannelOptions::setSerializationFormat(const QGrpcSerializationFormat &format)

Définit l'format de sérialisation du canal et renvoie une référence à l'objet mis à jour.

Cette fonction a été introduite dans Qt 6.8.

Voir aussi ` serializationFormat()`.

QGrpcChannelOptions &QGrpcChannelOptions::setSslConfiguration(const QSslConfiguration &sslConfiguration)

Définit l'sslConfiguration e du canal et renvoie une référence à l'objet mis à jour.

Voir également sslConfiguration().

std::optional<QSslConfiguration> QGrpcChannelOptions::sslConfiguration() const

Renvoie la configuration SSL du canal.

Si ce champ n'est pas défini, renvoie un objet ` std::optional` vide.

Voir aussi setSslConfiguration().

[static noexcept, since 6.12] QtGrpc::CompressionAlgorithms QGrpcChannelOptions::supportedCompressionAlgorithms()

Renvoie les algorithmes de compression que la version actuelle de Qt peut prendre en charge. « Identity » est toujours présent, car la spécification gRPC impose l'utilisation de messages non compressés. « Deflate » et « Gzip » sont toujours pris en charge.

Cette fonction a été introduite dans Qt 6.12.

Voir également acceptedCompressionAlgorithms() et setAcceptedCompressionAlgorithms().

[noexcept, since 6.8] void QGrpcChannelOptions::swap(QGrpcChannelOptions &other)

Permute l'other s de cet objet. Cette opération est très rapide et ne peut jamais échouer.

Cette fonction a été introduite dans Qt 6.8.

[since 6.8] QGrpcChannelOptions::operator QVariant() const

Crée un nouvel objet ` QVariant ` à partir de cet objet.

Cette fonction a été introduite dans Qt 6.8.

[noexcept] QGrpcChannelOptions &QGrpcChannelOptions::operator=(QGrpcChannelOptions &&other)

La fonction « move-assign » attribue la valeur de other à cet objet QGrpcChannelOptions et renvoie une référence à l'objet mis à jour.

Remarque : L’objet d’origine other est placé dans un état partiellement formé, dans lequel les seules opérations valides sont la destruction et l’affectation d’une nouvelle valeur.

QGrpcChannelOptions &QGrpcChannelOptions::operator=(const QGrpcChannelOptions &other)

Attribue la valeur « other » à cet objet « QGrpcChannelOptions » et renvoie une référence à l'objet mis à jour.

Éléments non membres associés

[noexcept, since 6.11] bool operator!=(const QGrpcChannelOptions &lhs, const QGrpcChannelOptions &rhs)

Renvoie « true » si les valeurs acceptedCompressionAlgorithms, deadlineTimeout, filterServerMetadata, maximumReceiveMessageSize, metadata(QtGrpc::MultiValue_t), requestCompression, serializationFormat et sslConfiguration dans lhs et rhs ne sont pas égales.

Cette fonction a été introduite dans Qt 6.11.

[since 6.8] QDebug operator<<(QDebug debug, const QGrpcChannelOptions &chOpts)

Écrit chOpts dans le flux spécifié debug.

Cette fonction a été introduite dans Qt 6.8.

[noexcept, since 6.11] bool operator==(const QGrpcChannelOptions &lhs, const QGrpcChannelOptions &rhs)

Renvoie « true » si les valeurs acceptedCompressionAlgorithms, deadlineTimeout, filterServerMetadata, maximumReceiveMessageSize, metadata(QtGrpc::MultiValue_t), requestCompression, serializationFormat et sslConfiguration dans lhs et rhs sont identiques.

Cette fonction a été introduite dans Qt 6.11.

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