En esta página

QGrpcOperationContext Class

La clase QGrpcOperationContext proporciona el contexto para la comunicación entre una operación individual y un canal. gRPC y un canal. Más...

Cabecera: #include <QGrpcOperationContext>
CMake: find_package(Qt6 REQUIRED COMPONENTS Grpc)
target_link_libraries(mytarget PRIVATE Qt6::Grpc)
Desde: Qt 6.7
Hereda: QObject

Funciones Públicas

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)

Señales

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

Descripción Detallada

QGrpcOperationContext se construye internamente cuando se solicita una llamada a procedimiento remoto (RPC), mediando la interacción entre la solicitud de operación del cliente y el resultado de la operación del canal.

Las RPC solicitadas en la interfaz del cliente devuelven especializaciones de QGrpcOperation, como QGrpcCallReply, QGrpcServerStream, QGrpcClientStream o QGrpcBidiStream. Estas clases se integran implícitamente con la contraparte subyacente QGrpcOperationContext.

Nota: No utilice esta clase directamente a menos que implemente un canal personalizado.

Las señales contenidas en esta clase se utilizan para construir la comunicación entre el cliente QGrpcOperation y la implementación QAbstractGrpcChannel. Estas operaciones son asíncronas por naturaleza, y múltiples RPCs pueden operar en el mismo canal concurrentemente. Los canales normalmente tratan todas las operaciones de la misma manera, y es responsabilidad del canal soportar y restringir correctamente el subconjunto de características que soporta su tipo de RPC.

Las señales que sólo deben ser emitidas por la implementación del canal son:

Las señales que serán emitidas por QGrpcOperation y sus especializaciones son:

Las implementaciones personalizadas de QAbstractGrpcChannel deben manejar las señales del cliente, ya que no se proporciona ningún manejo de señales por defecto, y emitir sus propias señales en consecuencia.

Documentación de las funciones miembro

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

Destruye el contexto de la operación.

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

Devuelve las opciones de llamada que utiliza este contexto de operación.

Para las opciones de todo el canal, consulte QGrpcChannelOptions.

[signal] void QGrpcOperationContext::cancelRequested()

Esta señal es emitida por QGrpcOperation cuando se solicita la cancelación de la comunicación.

Se espera que el canal conecte su lógica de cancelación a esta señal e intente cancelar la RPC y terminarla con un código de estado Cancelled. No se puede garantizar el éxito de la cancelación. El procesamiento posterior de los datos recibidos de un canal no es necesario y debe evitarse.

Véase también QGrpcOperation::cancel.

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

Devuelve el QtGrpc::RpcDescriptor para este contexto de operación.

Esta función se introdujo en Qt 6.11.

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

Esta señal debe ser emitida por el canal cuando finaliza una RPC.

Normalmente significa que el servidor envió un status para la RPC solicitada y cerró la conexión. Las implementaciones de QAbstractGrpcChannel deberían detectar esta situación y emitir la señal.

Después de recibir esta señal, no debe haber más comunicación a través de este contexto de operación. El cliente puede entonces eliminar de forma segura el objeto RPC correspondiente.

Nota: Esta señal está implícitamente conectada a la homóloga QGrpcOperation.

Véase también QGrpcOperation::finished.

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

Esta señal debe ser emitida por el canal cuando se recibe un nuevo trozo de data desde el servidor.

Para flujos de clientes y llamadas unarias, esto significa que la respuesta única y final ha llegado y la comunicación está a punto de terminar.

Para flujos de servidor y bidireccionales, esta señal debe ser emitida continuamente por el canal al recibir cada nuevo mensaje.

Nota: Esta señal está implícitamente conectada a su homóloga QGrpcOperation.

Véase también QGrpcServerStream::messageReceived y QGrpcBidiStream::messageReceived.

[noexcept] QLatin1StringView QGrpcOperationContext::method() const

Devuelve el nombre del método del servicio asociado a este contexto de operación.

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

Devuelve el identificador único para este contexto de operación.

Cada ID es único en todos los canales durante el tiempo de vida de la aplicación.

Esta función se introdujo en Qt 6.11.

QMetaType QGrpcOperationContext::responseMetaType() const

Devuelve el metatipo del mensaje de resultado RPC.

Véase también setResponseMetaType().

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

Devuelve el serializador de este contexto de operación

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

Devuelve los metadatos iniciales recibidos del servidor antes de cualquier mensaje de respuesta.

El servidor envía los metadatos iniciales inmediatamente después de establecer la llamada. Pueden incluir pares clave-valor que proporcionan contexto para la llamada.

Nota: QGrpcHttp2Channel transporta los metadatos como cabeceras HTTP/2. Las claves son cadenas ASCII que no distinguen mayúsculas de minúsculas. Debe evitar utilizar los prefijos internos: : (pseudocabecera), grpc-, o qtgrpc-. Los valores pueden ser cadenas ASCII o datos binarios. Para más información, consulte RFC 7540, Sección 8.1.2.

Nota: Este método es utilizado implícitamente por QGrpcOperation.

Esta función se introdujo en Qt 6.10.

Véase también setServerInitialMetadata(), QGrpcOperation::serverInitialMetadata(), y serverTrailingMetadata().

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

Esta señal se emite cuando el servidor responde con sus metadatos iniciales. Los metadatos iniciales del servidor se envían al cliente antes de la respuesta inicial de una RPC.

Los metadatos recibidos se proporcionan en metadata y también están disponibles a través de serverInitialMetadata().

Nota: Esta es una señal privada. Puede ser utilizada en conexiones de señal pero no puede ser emitida por el usuario.

Esta función se introdujo en Qt 6.11.

Véase también QGrpcOperation::serverInitialMetadataReceived y QGrpcBidiStream::writesDone.

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

Esta función quedará obsoleta en la versión 6.13.

Utilice serverInitialMetadata() y serverTrailingMetadata() en su lugar.

Devuelve los metadatos iniciales recibidos del servidor antes de cualquier mensaje de respuesta.

Los metadatos iniciales son enviados por el servidor inmediatamente después de que se establezca la llamada. Pueden incluir pares clave-valor que proporcionan contexto para la llamada.

Nota: QGrpcHttp2Channel transporta los metadatos como cabeceras HTTP/2. Las claves son cadenas ASCII que no distinguen mayúsculas de minúsculas. Debe evitar utilizar los prefijos internos: : (pseudocabecera), grpc-, o qtgrpc-. Los valores pueden ser cadenas ASCII o datos binarios. Para más información, consulte RFC 7540, Sección 8.1.2.

Nota: Este método es utilizado implícitamente por QGrpcOperation.

Véase también setServerMetadata(), serverInitialMetadata(), y QGrpcOperation::serverInitialMetadata().

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

Devuelve los metadatos finales recibidos del servidor después de todos los mensajes de respuesta.

El servidor sólo envía los metadatos finales una vez que se han enviado todos los mensajes de respuesta y justo antes de que finalice la RPC. Puede incluir pares clave-valor que proporcionen contexto adicional sobre la llamada completada.

Nota: QGrpcHttp2Channel transporta los metadatos como cabeceras HTTP/2. Las claves son cadenas ASCII que no distinguen mayúsculas de minúsculas. Debe evitar utilizar los prefijos internos: : (pseudocabecera), grpc-, o qtgrpc-. Los valores pueden ser cadenas ASCII o datos binarios. Para más información, consulte RFC 7540, Sección 8.1.2.

Nota: Este método es utilizado implícitamente por QGrpcOperation.

Esta función se introdujo en Qt 6.10.

Véase también QGrpcOperation::serverTrailingMetadata() y setServerTrailingMetadata().

[noexcept] QLatin1StringView QGrpcOperationContext::service() const

Devuelve el nombre del servicio asociado a este contexto de operación.

void QGrpcOperationContext::setResponseMetaType(QMetaType metaType)

Almacena la dirección metaType del mensaje de resultado RPC.

Véase también responseMetaType().

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

Establece el metadata recibido del servidor al inicio de la RPC.

Esta función se introdujo en Qt 6.10.

Véase también serverInitialMetadata().

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

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

Esta función quedará obsoleta en la versión 6.13.

Utilice setServerInitialMetadata() en su lugar.

Establece los metadatos recibidos del servidor al inicio de la RPC.

Véase también setServerInitialMetadata().

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

Establece el final de metadata recibido del servidor después de todos los mensajes de respuesta.

Esta función se introdujo en Qt 6.10.

Véase también serverTrailingMetadata().

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

Esta señal es emitida por QGrpcClientStream o QGrpcBidiStream cuando ha serializado data listo para que un canal lo entregue.

Se espera que el canal conecte su lógica de escritura a esta señal y envuelva los datos serializados en cabeceras relacionadas con el canal antes de escribirlos en el cable.

Ver también QGrpcClientStream::writeMessage y QGrpcBidiStream::writeMessage.

[signal] void QGrpcOperationContext::writesDoneRequested()

Esta señal es emitida por QGrpcClientStream o QGrpcBidiStream para indicar que ha terminado de escribir mensajes. El canal debe responder a esto cerrando a la mitad el flujo.

Nota: Después de recibir esta señal no se permiten más operaciones de escritura para los RPCs de streaming. El servidor aún puede enviar mensajes, los cuales deben ser reenviados con messageReceived().

Ver también QGrpcClientStream::writesDone y 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.