Auf dieser Seite

QGrpcOperationContext Class

Die Klasse „QGrpcOperationContext“ stellt einen Kontext für die Kommunikation zwischen einer einzelnen gRPC™ Operation und einem Kanal. Mehr...

Header: #include <QGrpcOperationContext>
CMake: find_package(Qt6 REQUIRED COMPONENTS Grpc)
target_link_libraries(mytarget PRIVATE Qt6::Grpc)
Seit: Qt 6.7
Erbt von: QObject

Öffentliche Funktionen

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)

Signale

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

Ausführliche Beschreibung

QGrpcOperationContext wird intern erstellt, wenn ein Remote Procedure Call (RPC) angefordert wird, und vermittelt die Interaktion zwischen der Operationsanforderung des Clients und dem Operationsergebnis des Kanals.

Über die Client-Schnittstelle angeforderte RPCs geben Spezialisierungen von ` QGrpcOperation` zurück, wie beispielsweise ` QGrpcCallReply`, ` QGrpcServerStream`, ` QGrpcClientStream` oder ` QGrpcBidiStream`. Diese Klassen sind implizit mit dem zugrunde liegenden `QGrpcOperationContext`-Gegenstück integriert.

Hinweis: Verwenden Sie diese Klassenicht direkt, es sei denn, Sie implementieren einen benutzerdefinierten Kanal.

Die in dieser Klasse enthaltenen Signale dienen dazu, die Kommunikation zwischen dem clientseitigen ` QGrpcOperation ` und der ` QAbstractGrpcChannel `-Implementierung aufzubauen. Diese Vorgänge sind von Natur aus asynchron, und mehrere RPCs können gleichzeitig auf demselben Kanal ausgeführt werden. Kanäle behandeln in der Regel alle Operationen gleich, und es liegt in der Verantwortung des Kanals, die von seinem RPC-Typ unterstützten Funktionen korrekt zu unterstützen und einzuschränken.

Signale, die ausschließlich von der Implementierung des Kanals ausgesendet werden sollten, sind:

Signale, die von ` QGrpcOperation ` und dessen Spezialisierungen ausgegeben werden, sind:

Benutzerdefinierte Implementierungen von ` QAbstractGrpcChannel ` müssen die Signale des Clients verarbeiten, da keine Standard-Signalverarbeitung bereitgestellt wird, und entsprechend ihre eigenen Signale ausgeben.

Dokumentation der Mitgliedsfunktionen

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

Löscht den Operationskontext.

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

Gibt die Call-Optionen zurück, die von diesem Operationskontext verwendet werden.

Informationen zu kanalweiten Optionen finden Sie unter QGrpcChannelOptions.

[signal] void QGrpcOperationContext::cancelRequested()

Dieses Signal wird von „ QGrpcOperation “ gesendet, wenn die Abbruch der Kommunikation angefordert wird.

Es wird erwartet, dass der Kanal seine Abbruchlogik an dieses Signal anschließt und versucht, den RPC abzubrechen und ihn mit einem Cancelled -Statuscode abzuschließen. Ein erfolgreicher Abbruch kann nicht garantiert werden. Eine weitere Verarbeitung der von einem Kanal empfangenen Daten ist nicht erforderlich und sollte vermieden werden.

Siehe auch QGrpcOperation::cancel.

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

Gibt den „ QtGrpc::RpcDescriptor “ für diesen Operationskontext zurück.

Diese Funktion wurde in Qt 6.11 eingeführt.

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

Dieses Signal sollte vom Kanal ausgesendet werden, wenn ein RPC-Aufruf beendet ist.

Dies bedeutet in der Regel, dass der Server einen „ status “ für den angeforderten RPC gesendet und die Verbindung geschlossen hat. Implementierungen von ` QAbstractGrpcChannel ` sollten diese Situation erkennen und das Signal ausgeben.

Nach dem Empfang dieses Signals sollte über diesen Operationskontext keine weitere Kommunikation mehr stattfinden. Die Client-Seite kann dann das entsprechende RPC-Objekt sicher löschen.

Hinweis: Dieses Signal ist implizit mit dem Gegenstück „ QGrpcOperation “ verbunden.

Siehe auch „ QGrpcOperation::finished “.

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

Dieses Signal sollte vom Kanal ausgesendet werden, wenn ein neuer Datenblock von data vom Server empfangen wird.

Bei Client-Streams und unären Aufrufen bedeutet dies, dass die einzige und letzte Antwort eingegangen ist und die Kommunikation kurz vor dem Abschluss steht.

Bei Server- und bidirektionalen Streams sollte dieses Signal vom Kanal bei jedem Empfang einer neuen Nachricht kontinuierlich ausgesendet werden.

Hinweis: Dieses Signal ist implizit mit dem entsprechenden Signal „ QGrpcOperation “ verknüpft.

Siehe auch „ QGrpcServerStream::messageReceived “ und „ QGrpcBidiStream::messageReceived “.

[noexcept] QLatin1StringView QGrpcOperationContext::method() const

Gibt den Methodennamen des Dienstes zurück, der diesem Operationskontext zugeordnet ist.

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

Gibt die eindeutige Kennung für diesen Operationskontext zurück.

Jede ID ist über alle Kanäle hinweg während der gesamten Lebensdauer der Anwendung eindeutig.

Diese Funktion wurde in Qt 6.11 eingeführt.

QMetaType QGrpcOperationContext::responseMetaType() const

Gibt den Metatyp der RPC-Ergebnismeldung zurück.

Siehe auch „ setResponseMetaType()“.

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

Gibt den Serializer dieses Operationskontexts zurück

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

Gibt die vom Server vor dem Empfang von Antwortnachrichten empfangenen anfänglichen Metadaten zurück.

Die anfänglichen Metadaten werden vom Server unmittelbar nach dem Aufbau der Verbindung gesendet. Sie können Schlüssel-Wert-Paare enthalten, die Kontextinformationen für die Verbindung liefern.

Hinweis: Schlüssel mit den Präfixen „ grpc- “ oder „ qtgrpc- “ sind von gRPC™ und QtGrpc reserviert. Entsprechende Einträge werden beim Aufbau der Anfrage ignoriert. Konkrete Kanäle können weitere Einschränkungen auferlegen; siehe QGrpcHttp2Channel#Reserved metadata keys.

Hinweis: Diese Methode wird implizit von QGrpcOperation verwendet.

Diese Funktion wurde in Qt 6.10 eingeführt.

Siehe auch setServerInitialMetadata(), QGrpcOperation::serverInitialMetadata() und serverTrailingMetadata().

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

Dieses Signal wird ausgesendet, wenn der Server seine anfänglichen Metadaten übermittelt. Die anfänglichen Metadaten des Servers werden vor der ersten Antwort eines RPC an den Client gesendet.

Die empfangenen Metadaten werden in „ metadata “ bereitgestellt und sind auch über „ serverInitialMetadata “ () verfügbar.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.

Diese Funktion wurde in Qt 6.11 eingeführt.

Siehe auch QGrpcOperation::serverInitialMetadataReceived und QGrpcBidiStream::writesDone.

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

Diese Funktion wird in Version 6.13 als veraltet markiert.

Verwenden Sie stattdessen „ serverInitialMetadata()“ und „ serverTrailingMetadata()“.

Gibt die vom Server vor dem Empfang von Antwortnachrichten empfangenen anfänglichen Metadaten zurück.

Die anfänglichen Metadaten werden vom Server unmittelbar nach dem Aufbau der Verbindung gesendet. Sie können Schlüssel-Wert-Paare enthalten, die Kontextinformationen für die Verbindung liefern.

Hinweis: Schlüssel mit dem Präfix „ grpc- “ oder „ qtgrpc- “ sind für „ gRPC “ und „ QtGrpc “ reserviert. Entsprechende Einträge werden beim Aufbau der Anfrage ignoriert. Konkrete Kanäle können weitere Einschränkungen auferlegen; siehe QGrpcHttp2Channel#Reserved metadata keys.

Hinweis: Diese Methode wird implizit von QGrpcOperation verwendet.

Siehe auch setServerMetadata(), serverInitialMetadata() und QGrpcOperation::serverInitialMetadata().

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

Gibt die vom Server nach allen Antwortnachrichten empfangenen abschließenden Metadaten zurück.

Abschließende Metadaten werden vom Server erst gesendet, nachdem alle Antwortnachrichten übermittelt wurden und unmittelbar bevor der RPC-Aufruf abgeschlossen wird. Sie können Schlüssel-Wert-Paare enthalten, die zusätzlichen Kontext zum abgeschlossenen Aufruf liefern.

Hinweis: Schlüssel mit den Präfixen „ grpc- “ oder „ qtgrpc- “ sind für „ gRPC “ und „ QtGrpc “ reserviert. Entsprechende Einträge werden beim Aufbau der Anfrage ignoriert. Konkrete Kanäle können weitere Einschränkungen auferlegen; siehe QGrpcHttp2Channel#Reserved metadata keys.

Hinweis: Diese Methode wird implizit von QGrpcOperation verwendet.

Diese Funktion wurde in Qt 6.10 eingeführt.

Siehe auch QGrpcOperation::serverTrailingMetadata() und setServerTrailingMetadata().

[noexcept] QLatin1StringView QGrpcOperationContext::service() const

Gibt den Namen des Dienstes zurück, der diesem Operationskontext zugeordnet ist.

void QGrpcOperationContext::setResponseMetaType(QMetaType metaType)

Speichert den „ metaType “ der RPC-Ergebnismeldung.

Siehe auch ` responseMetaType()`.

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

Legt den vom Server zu Beginn des RPC empfangenen „ metadata “ fest.

Diese Funktion wurde in Qt 6.10 eingeführt.

Siehe auch ` serverInitialMetadata()`.

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

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

Diese Funktion soll in Version 6.13 als veraltet markiert werden.

Verwenden Sie stattdessen ` setServerInitialMetadata()`.

Legt die Metadaten fest, die zu Beginn des RPC vom Server empfangen wurden.

Siehe auch ` setServerInitialMetadata()`.

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

Setzt das vom Server empfangene Nachhängungs metadata nach allen Antwortnachrichten.

Diese Funktion wurde in Qt 6.10 eingeführt.

Siehe auch ` serverTrailingMetadata()`.

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

Dieses Signal wird von QGrpcClientStream oder QGrpcBidiStream ausgesendet, wenn die serialisierten Daten data bereitstehen und über einen Kanal übertragen werden sollen.

Es wird erwartet, dass der Kanal seine Schreiblogik an dieses Signal anbindet und die serialisierten Daten in kanalbezogene Header einbettet, bevor er sie in das Netzwerk schreibt.

Siehe auch QGrpcClientStream::writeMessage und QGrpcBidiStream::writeMessage.

[signal] void QGrpcOperationContext::writesDoneRequested()

Dieses Signal wird von ` QGrpcClientStream ` oder ` QGrpcBidiStream ` ausgegeben, um anzuzeigen, dass das Schreiben von Nachrichten abgeschlossen ist. Der Kanal sollte darauf reagieren, indem er den Stream halb schließt.

Hinweis: Nach dem Empfang dieses Signals sind keine Schreibvorgänge mehr für die Streaming-RPCs zulässig. Der Server kann weiterhin Nachrichten senden, die mit messageReceived() weitergeleitet werden sollten.

Siehe auch ` QGrpcClientStream::writesDone ` und ` 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.