이 페이지에서

QGrpcOperationContext Class

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

헤더: #include <QGrpcOperationContext>
CMake: find_package(Qt6 REQUIRED COMPONENTS Grpc)
target_link_libraries(mytarget PRIVATE Qt6::Grpc)
다음부터: Qt 6.7
상속: QObject

공개 함수

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)

신호

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

상세 설명

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

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

참고: 사용자 정의 채널을 구현하는 경우가 아니라면 이 클래스를 직접 사용하지마십시오 .

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

채널 구현체에서만 발생시켜야 하는 시그널은 다음과 같습니다:

QGrpcOperation 와 그 특수화에서 발생시키는 신호는 다음과 같습니다:

QAbstractGrpcChannel 의 사용자 정의 구현체는 기본 신호 처리 기능이 제공되지 않으므로 클라이언트의 신호를 처리해야 하며, 그에 따라 자체 신호를 발생시켜야 합니다.

멤버 함수 문서

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

작업 컨텍스트를 제거합니다.

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

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

채널 전체에 적용되는 옵션에 대해서는 QGrpcChannelOptions 를 참조하십시오.

[signal] void QGrpcOperationContext::cancelRequested()

이 신호는 QGrpcOperation 가 통신 취소를 요청할 때 전송됩니다.

채널은 이 신호에 취소 로직을 연결하여 RPC를 취소하고, ` Cancelled ` 상태 코드로 RPC를 종료해야 합니다. 취소 성공 여부는 보장되지 않습니다. 채널로부터 수신된 데이터에 대한 추가 처리는 필요하지 않으며, 이를 피해야 합니다.

QGrpcOperation::cancel도 참조하십시오 .

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

이 작업 컨텍스트에 대한 ` QtGrpc::RpcDescriptor `를 반환합니다.

이 함수는 Qt 6.11에서 도입되었습니다.

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

이 신호는 RPC가 완료될 때 채널에서 전송되어야 합니다.

이는 일반적으로 서버가 요청된 RPC에 대해 ` status `를 반환하고 연결을 종료했음을 의미합니다. ` QAbstractGrpcChannel `의 구현체는 이러한 상황을 감지하여 신호를 발생시켜야 합니다.

이 신호를 수신한 후에는 해당 작업 컨텍스트를 통해 더 이상 통신이 이루어져서는 안 됩니다. 그러면 클라이언트 측에서 해당 RPC 객체를 안전하게 삭제할 수 있습니다.

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

QGrpcOperation::finished도 참조하십시오 .

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

이 신호는 서버로부터 새로운 data 청크를 수신했을 때 채널에서 전송되어야 합니다.

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

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

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

QGrpcServerStream::messageReceived 및 QGrpcBidiStream::messageReceived도 참조하십시오 .

[noexcept] QLatin1StringView QGrpcOperationContext::method() const

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

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

이 작업 컨텍스트에 대한 고유 식별자를 반환합니다.

각 ID는 애플리케이션 수명 주기 동안 모든 채널에 걸쳐 고유합니다.

이 함수는 Qt 6.11에서 도입되었습니다.

QMetaType QGrpcOperationContext::responseMetaType() const

RPC 결과 메시지의 메타 유형을 반환합니다.

setResponseMetaType()도 참조하십시오 .

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

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

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

응답 메시지가 전송되기 전에 서버로부터 수신한 초기 메타데이터를 반환합니다.

초기 메타데이터는 연결이 수립된 직후 서버에서 전송됩니다. 여기에는 호출의 컨텍스트를 제공하는 키-값 쌍이 포함될 수 있습니다.

참고: grpc- 또는 qtgrpc- 접두사가 붙은 키는 gRPC™ 및 QtGrpc 에 의해 예약되어 있습니다. 이를 사용하는 항목은 요청이 구성될 때 무시됩니다. 구체적인 채널에 따라 추가 제한이 적용될 수 있습니다. QGrpcHttp2Channel#Reserved metadata keys 를 참조하십시오.

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

이 함수는 Qt 6.10에서 도입되었습니다.

setServerInitialMetadata(), QGrpcOperation::serverInitialMetadata() 및 serverTrailingMetadata()도 참조하십시오 .

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

이 신호는 서버가 초기 메타데이터를 포함하여 응답할 때 발생합니다. 서버의 초기 메타데이터는 RPC의 초기 응답보다 먼저 클라이언트로 전송됩니다.

수신된 메타데이터는 ` metadata `에 제공되며, ` serverInitialMetadata()`를 통해서도 확인할 수 있습니다.

참고: 이 신호는 비공개 신호입니다. 신호 연결에서 사용할 수는 있지만, 사용자가 직접 발산할 수는 없습니다.

이 함수는 Qt 6.11에서 도입되었습니다.

QGrpcOperation::serverInitialMetadataReceived 및 QGrpcBidiStream::writesDone도 참조하십시오 .

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

이 함수는 버전 6.13에서 사용 중단될 예정입니다.

대신 ` serverInitialMetadata()` 및 ` serverTrailingMetadata()`를 사용하십시오.

응답 메시지가 전송되기 전에 서버로부터 수신한 초기 메타데이터를 반환합니다.

초기 메타데이터는 호출이 설정된 직후 서버에서 전송됩니다. 여기에는 호출의 컨텍스트를 제공하는 키-값 쌍이 포함될 수 있습니다.

참고: grpc- 또는 qtgrpc- 접두사가 붙은키는 gRPC 및 QtGrpc 에 의해 예약되어 있습니다. 요청이 구성될 때 이러한 키를 사용하는 항목은 무시됩니다. 구체적인 채널에 따라 추가 제한이 적용될 수 있습니다. QGrpcHttp2Channel#Reserved metadata keys 를 참조하십시오.

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

setServerMetadata(), serverInitialMetadata(), QGrpcOperation::serverInitialMetadata()도 참조하십시오 .

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

모든 응답 메시지가 전송된 후 서버로부터 수신한 후행 메타데이터를 반환합니다.

후행 메타데이터는 모든 응답 메시지가 전송된 후, RPC가 완료되기 직전에 서버에서만 전송됩니다. 여기에는 완료된 호출에 대한 추가적인 컨텍스트를 제공하는 키-값 쌍이 포함될 수 있습니다.

참고: grpc- 또는 qtgrpc- 접두사가 붙은키는 gRPC 및 QtGrpc 에서 예약되어 있습니다. 요청이 구성될 때 이러한 키를 사용하는 항목은 무시됩니다. 구체적인 채널에 따라 추가 제한이 적용될 수 있습니다. 자세한 내용은 QGrpcHttp2Channel#Reserved metadata keys 를 참조하십시오.

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

이 함수는 Qt 6.10에서 도입되었습니다.

QGrpcOperation::serverTrailingMetadata() 및 setServerTrailingMetadata()도 참조하십시오 .

[noexcept] QLatin1StringView QGrpcOperationContext::service() const

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

void QGrpcOperationContext::setResponseMetaType(QMetaType metaType)

RPC 결과 메시지의 metaType 를 저장합니다.

responseMetaType()도 참조하십시오 .

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

RPC 시작 시 서버로부터 수신한 metadata 를 설정합니다.

이 함수는 Qt 6.10에서 도입되었습니다.

serverInitialMetadata()도 참조하십시오 .

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

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

이 함수는 버전 6.13에서 사용 중단될 예정입니다.

대신 setServerInitialMetadata()를 사용하십시오.

RPC 시작 시 서버로부터 수신한 메타데이터를 설정합니다.

setServerInitialMetadata()도 참조하십시오 .

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

모든 응답 메시지 뒤에 서버로부터 수신된 metadata 를 추가하도록 설정합니다.

이 함수는 Qt 6.10에서 도입되었습니다.

serverTrailingMetadata()도 참조하십시오 .

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

이 신호는 QGrpcClientStream 또는 QGrpcBidiStream 에서 data 를 직렬화하여 채널을 통해 전송할 준비가 되었을 때 발생합니다.

채널은 이 신호에 쓰기 로직을 연결하고, 직렬화된 데이터를 채널 관련 헤더로 감싼 후 네트워크로 전송해야 합니다.

QGrpcClientStream::writeMessage 및 QGrpcBidiStream::writeMessage도 참조하십시오 .

[signal] void QGrpcOperationContext::writesDoneRequested()

이 신호는 QGrpcClientStream 또는 QGrpcBidiStream 에서 메시지 쓰기가 완료되었음을 알리기 위해 전송됩니다. 채널은 이에 대응하여 스트림을 반닫기(half-close)해야 합니다.

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

QGrpcClientStream::writesDone 및 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.