QGrpcOperationContext Class

QGrpcOperationContext 클래스는 개별 작업과 채널 간의 통신을 위한 컨텍스트를 제공합니다. gRPC 연산과 채널 간의 통신 컨텍스트를 제공합니다. 더 보기...

Header: #include <QGrpcOperationContext>
CMake: find_package(Qt6 REQUIRED COMPONENTS Grpc)
target_link_libraries(mytarget PRIVATE Qt6::Grpc)
이후 Qt 6.7
상속합니다: QObject

공용 함수

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)

시그널

void cancelRequested()
void messageReceived(const QByteArray &data)
void writeMessageRequested(const QByteArray &data)
void writesDoneRequested()

상세 설명

QGrpcOperationContext는 원격 프로시저 호출(RPC)이 요청될 때 내부적으로 생성되어 클라이언트의 작업 요청과 채널의 작업 결과 사이의 상호 작용을 중재합니다.

클라이언트 인터페이스에서 요청된 RPC는 QGrpcCallReply, QGrpcServerStream, QGrpcClientStream, QGrpcBidiStream 와 같은 QGrpcOperation 의 특수화를 반환합니다. 이러한 클래스는 기본 QGrpcOperationContext와 암시적으로 통합되어 있습니다.

참고: 사용자 지정 채널을 구현하지 않는 한 이 클래스를 직접 사용하지 마세요.

이 클래스에 포함된 신호는 클라이언트를 향한 QGrpcOperationQAbstractGrpcChannel 구현 간의 통신을 구축하는 데 사용됩니다. 이러한 작업은 본질적으로 비동기식이며 여러 RPC가 동일한 채널에서 동시에 작동할 수 있습니다. 채널은 일반적으로 모든 작업을 동일하게 취급하며, 해당 RPC 유형이 지원하는 기능의 하위 집합을 올바르게 지원하고 제한하는 것은 채널의 책임입니다.

채널의 구현에 의해서만 방출되어야 하는 신호는 다음과 같습니다:

QGrpcOperation 및 그 전문화에서 방출할 신호는 다음과 같습니다:

QAbstractGrpcChannel 의 사용자 정의 구현은 기본 신호 처리가 제공되지 않으므로 클라이언트의 신호를 처리하고 그에 따라 자체 신호를 방출해야 합니다.

멤버 함수 문서

void QGrpcOperationContext::setServerMetadata(QHash<QByteArray, QByteArray> &&metadata)

void QGrpcOperationContext::setServerMetadata(const QHash<QByteArray, QByteArray> &metadata)

서비스에서 수신한 metadata 서버를 설정합니다.

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

작업 컨텍스트를 파괴합니다.

[noexcept] QByteArrayView QGrpcOperationContext::argument() const

이 연산 컨텍스트에서 사용되는 직렬화된 인수를 반환합니다.

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

이 작업 컨텍스트에서 사용되는 콜 옵션을 반환합니다.

채널 전체 옵션은 QGrpcChannelOptions 을 참조하세요.

[signal] void QGrpcOperationContext::cancelRequested()

이 신호는 통신 취소를 요청할 때 QGrpcOperation 에서 발신합니다.

채널은 이 신호에 취소 로직을 연결하여 RPC를 취소하고 즉시 복귀를 시도합니다. 성공적인 취소를 보장할 수는 없습니다. 채널에서 수신한 데이터의 추가 처리는 필요하지 않으므로 피해야 합니다.

QGrpcOperation::cancel참조하세요 .

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

이 신호는 서버에서 새 data 청크를 수신할 때 채널에서 발신해야 합니다.

클라이언트 스트림 및 단방향 호출의 경우, 이는 단일 및 최종 응답이 도착했으며 통신이 곧 종료될 것임을 의미합니다.

서버 및 양방향 스트림의 경우, 이 신호는 각각의 새 메시지를 수신할 때마다 채널에서 지속적으로 발신해야 합니다.

참고: 이 신호는 QGrpcOperation 에 암시적으로 연결되어 있습니다.

QGrpcServerStream::messageReceivedQGrpcBidiStream::messageReceived참조하세요 .

[noexcept] QLatin1StringView QGrpcOperationContext::method() const

이 작업 컨텍스트와 연관된 서비스의 메서드 이름을 반환합니다.

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

이 연산 컨텍스트의 직렬화기를 반환합니다.

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

서버에서 받은 메타데이터를 반환합니다.

참고: 이 메서드는 QGrpcOperation 대응 메서드에서 암시적으로 사용됩니다.

setServerMetadata()도 참조하세요 .

[noexcept] QLatin1StringView QGrpcOperationContext::service() const

이 작업 컨텍스트와 연관된 서비스 이름을 반환합니다.

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

이 신호는 채널이 전달할 준비가 된 data 을 직렬화하면 QGrpcClientStream 또는 QGrpcBidiStream 에서 발신합니다.

채널은 쓰기 로직을 이 신호에 연결하고 직렬화된 데이터를 채널 관련 헤더로 래핑한 후 와이어에 기록해야 합니다.

QGrpcClientStream::writeMessageQGrpcBidiStream::writeMessage참조하세요 .

[signal] void QGrpcOperationContext::writesDoneRequested()

이 신호는 QGrpcClientStream 또는 QGrpcBidiStream 에서 전송하여 메시지 쓰기가 완료되었음을 알립니다. 채널은 스트림을 반쯤 닫음으로써 이 신호에 응답해야 합니다.

참고: 이 신호를 수신한 후에는 스트리밍 RPC에 더 이상 쓰기 작업이 허용되지 않습니다. 서버는 여전히 메시지를 보낼 수 있으며, messageReceived()로 전달해야 합니다.

QGrpcClientStream::writesDoneQGrpcBidiStream::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.