QGrpcOperationContext Class
Die Klasse QGrpcOperationContext stellt den Kontext für die Kommunikation zwischen einer einzelnen gRPC™ Operation und einem Kanal. Mehr...
Kopfzeile: | #include <QGrpcOperationContext> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Grpc) target_link_libraries(mytarget PRIVATE Qt6::Grpc) |
Seit: | Qt 6.7 |
Erbt: | QObject |
Öffentliche Funktionen
virtual | ~QGrpcOperationContext() override |
QByteArrayView | argument() const |
const QGrpcCallOptions & | callOptions() const & |
QLatin1StringView | method() const |
std::shared_ptr<const QAbstractProtobufSerializer> | serializer() const |
const QHash<QByteArray, QByteArray> & | serverMetadata() const & |
QLatin1StringView | service() const |
void | setServerMetadata(QHash<QByteArray, QByteArray> &&metadata) |
void | setServerMetadata(const QHash<QByteArray, QByteArray> &metadata) |
Signale
void | cancelRequested() |
void | messageReceived(const QByteArray &data) |
void | writeMessageRequested(const QByteArray &data) |
void | writesDoneRequested() |
Detaillierte 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.
RPCs, die über die Client-Schnittstelle angefordert werden, geben Spezialisierungen von QGrpcOperation zurück, wie QGrpcCallReply, QGrpcServerStream, QGrpcClientStream oder QGrpcBidiStream. Diese Klassen sind implizit in das zugrunde liegende QGrpcOperationContext-Gegenstück integriert.
Hinweis: Verwenden Sie diese Klasse nicht direkt, es sei denn, Sie implementieren einen benutzerdefinierten Kanal.
Die in dieser Klasse enthaltenen Signale werden verwendet, um die Kommunikation zwischen der Client-Seite QGrpcOperation und der Implementierung QAbstractGrpcChannel aufzubauen. Diese Operationen sind asynchroner Natur, und mehrere RPCs können gleichzeitig auf demselben Kanal arbeiten. Kanäle behandeln in der Regel alle Operationen gleich, und es liegt in der Verantwortung des Kanals, die Teilmenge der Funktionen, die sein RPC-Typ unterstützt, korrekt zu unterstützen und zu beschränken.
Signale, die nur von der Implementierung des Kanals ausgegeben werden sollten, sind:
- finished()
- messageReceived()
Signale, die von QGrpcOperation und seinen Spezialisierungen ausgesendet werden, sind:
Benutzerdefinierte Implementierungen von QAbstractGrpcChannel müssen die Signale des Clients behandeln, da keine Standard-Signalbehandlung vorgesehen ist, und ihre eigenen Signale entsprechend ausgeben.
Dokumentation der Mitgliedsfunktionen
void QGrpcOperationContext::setServerMetadata(QHash<QByteArray, QByteArray> &&metadata)
void QGrpcOperationContext::setServerMetadata(const QHash<QByteArray, QByteArray> &metadata)
Legt den vom Dienst empfangenen Server metadata fest.
[override virtual noexcept]
QGrpcOperationContext::~QGrpcOperationContext()
Zerstört den Operationskontext.
[noexcept]
QByteArrayView QGrpcOperationContext::argument() const
Gibt das serialisierte Argument zurück, das von diesem operation-context verwendet wird.
[noexcept]
const QGrpcCallOptions &QGrpcOperationContext::callOptions() const &
Gibt die Anrufoptionen zurück, die von diesem Vorgangskontext verwendet werden.
Für kanalübergreifende Optionen, siehe QGrpcChannelOptions.
[signal]
void QGrpcOperationContext::cancelRequested()
Dieses Signal wird von QGrpcOperation ausgegeben, wenn ein Abbruch der Kommunikation angefordert wird.
Es wird erwartet, dass der Kanal seine Abbruchlogik mit diesem Signal verbindet und versucht, den RPC abzubrechen und sofort zurückzukehren. 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.
[signal]
void QGrpcOperationContext::messageReceived(const QByteArray &data)
Dieses Signal sollte vom Kanal ausgesendet werden, wenn ein neues Chunk von data vom Server empfangen wird.
Bei Client-Streams und unären Aufrufen bedeutet dies, dass die einzige und endgültige Antwort eingetroffen ist und die Kommunikation kurz vor dem Abschluss steht.
Bei Server- und bidirektionalen Streams sollte dieses Signal vom Kanal kontinuierlich beim Empfang jeder neuen Nachricht ausgegeben werden.
Hinweis: Dieses Signal ist implizit mit dem Gegenstück QGrpcOperation verbunden.
Siehe auch QGrpcServerStream::messageReceived und QGrpcBidiStream::messageReceived.
[noexcept]
QLatin1StringView QGrpcOperationContext::method() const
Gibt den Methodennamen des Dienstes zurück, der mit diesem Vorgangskontext verbunden ist.
std::shared_ptr<const QAbstractProtobufSerializer> QGrpcOperationContext::serializer() const
Gibt den Serialisierer dieses Operationskontextes zurück
[noexcept]
const QHash<QByteArray, QByteArray> &QGrpcOperationContext::serverMetadata() const &
Gibt die vom Server empfangenen Metadaten zurück.
Hinweis: Diese Methode wird implizit von dem Gegenstück QGrpcOperation verwendet.
Siehe auch setServerMetadata().
[noexcept]
QLatin1StringView QGrpcOperationContext::service() const
Gibt den Namen des Dienstes zurück, der mit diesem Vorgangskontext verbunden ist.
[signal]
void QGrpcOperationContext::writeMessageRequested(const QByteArray &data)
Dieses Signal wird von QGrpcClientStream oder QGrpcBidiStream ausgegeben, wenn data serialisiert wurde und für einen Kanal zur Übergabe bereit ist.
Es wird erwartet, dass der Kanal seine Schreiblogik mit diesem Signal verbindet und die serialisierten Daten in kanalbezogene Header verpackt, bevor sie auf die Leitung geschrieben werden.
Siehe auch QGrpcClientStream::writeMessage und QGrpcBidiStream::writeMessage.
[signal]
void QGrpcOperationContext::writesDoneRequested()
Dieses Signal wird von QGrpcClientStream oder QGrpcBidiStream ausgesendet, 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 Schreiboperationen mehr für die Streaming-RPCs erlaubt. Der Server kann weiterhin Nachrichten senden, die mit messageReceived() weitergeleitet werden sollten.
Siehe auch QGrpcClientStream::writesDone und QGrpcBidiStream::writesDone.
© 2025 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.