QDBusPendingReply Class
QDBusPendingReply 클래스에는 비동기 메서드 호출에 대한 응답이 포함되어 있습니다. 더 보기...
| 헤더: | #include <QDBusPendingReply> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS DBus) target_link_libraries(mytarget PRIVATE Qt6::DBus) |
| qmake: | QT += dbus |
| 상속: | QDBusPendingReplyBase |
공개 유형
| enum { Count } |
공개 함수
| QDBusPendingReply() | |
| QDBusPendingReply(const QDBusMessage &message) | |
| QDBusPendingReply(const QDBusPendingCall &call) | |
| QDBusPendingReply(const QDBusPendingReply<Types...> &other) | |
(since 6.10) | QDBusPendingReply(QDBusPendingReply<Types...> &&other) |
| QVariant | argumentAt(int index) const |
| int | count() const |
| QDBusError | error() const |
| bool | isError() const |
| bool | isFinished() const |
| bool | isValid() const |
| QDBusMessage | reply() const |
| typename Select<0>::Type | value() const |
| void | waitForFinished() |
| operator typename Select<0>::Type() const | |
(since 6.10) int & | operator=(QDBusPendingReply<Types...> &&other) |
| QDBusPendingReply<Types...> & | operator=(const QDBusMessage &message) |
| QDBusPendingReply<Types...> & | operator=(const QDBusPendingCall &call) |
| int & | operator=(const QDBusPendingReply<Types...> &other) |
상세 설명
QDBusPendingReply는 가변 인자 템플릿 클래스입니다. 템플릿 매개변수는 응답 데이터의 내용을 추출하는 데 사용될 유형입니다.
이 클래스는 기능 면에서 ` QDBusReply`와 유사하지만, 두 가지 중요한 차이점이 있습니다:
- QDBusReply QDBusPendingReply는 정확히 하나의 반환 유형만 허용하는 반면, QDBusPendingReply는 유형을 무제한으로 가질 수 있습니다
- QDBusReply xml-ph-0000@deepl.internal는 이미 완료된 응답에서만 작동하는 반면, QDBusPendingReply는 보류 중인 호출에 대한 응답을 기다릴 수 있습니다
QDBusReply 를 사용할 경우 다음과 같이 작성합니다:
QDBusReply<QString> reply = interface->call("RemoteMethod");
if (reply.isValid())
// use the returned value
useValue(reply.value());
else
// call failed. Show an error condition.
showError(reply.error());QDBusPendingReply를 사용할 경우, 이에 상응하는 코드(응답에 대한 차단 대기 포함)는 다음과 같습니다:
QDBusPendingReply<QString> reply = iface->asyncCall("RemoteMethod");
reply.waitForFinished();
if (reply.isError())
// call failed. Show an error condition.
showErrorD(reply.error());
else
// use the returned value
useValue(reply.value());출력 인자가 두 개 이상인 메서드 호출의 경우, ` QDBusReply`를 사용할 때는 다음과 같이 작성합니다:
reply = interface->call("RemoteMethod");반면 QDBusPendingReply를 사용할 때는 모든 출력 인자를 템플릿 매개변수로 지정해야 합니다:
QDBusPendingReply<bool, QString> reply = iface->asyncCall("RemoteMethod");
reply.waitForFinished();
if (!reply.isError()) {
if (reply.argumentAt<0>())
showSuccess(reply.argumentAt<1>());
else
showFailure(reply.argumentAt<1>());
}QDBusPendingReply 객체는 QDBusPendingCallWatcher 객체와 연결할 수 있으며, 이 객체는 응답이 도착하면 신호를 발생시킵니다.
QDBusPendingCallWatcher 및 QDBusReply도 참조하십시오 .
멤버 유형 문서
[anonymous] enum
| 상수 | 값 | 설명 |
|---|---|---|
QDBusPendingReply::Count | std::is_same_v<typename Select<0>::Type, void> ? 0 : sizeof...(Types) | 응답에 포함될 것으로 예상되는 인수의 개수 |
멤버 함수 문서
[default] QDBusPendingReply::QDBusPendingReply()
빈 QDBusPendingReply 객체를 생성합니다. 이 응답 객체에 QDBusPendingCall 객체를 할당하지 않으면, QDBusPendingReply는 아무런 작업도 수행할 수 없습니다. 모든 함수는 오류 값을 반환합니다.
QDBusPendingReply::QDBusPendingReply(const QDBusMessage &message)
message 메시지의 내용을 가져오는 QDBusPendingReply 객체를 생성합니다. 이 경우, 해당 객체는 이미 완료된 상태이며 응답의 내용에 접근할 수 있게 됩니다.
isFinished()도 참조하십시오 .
QDBusPendingReply::QDBusPendingReply(const QDBusPendingCall &call)
call 의 보류 중인 비동기 호출에서 내용을 가져오는 QDBusPendingReply 객체를 생성합니다. 이 QDBusPendingReply 객체는 call 와 동일한 보류 중인 호출 참조를 공유합니다.
[implicit] QDBusPendingReply::QDBusPendingReply(const QDBusPendingReply<Types...> &other)
other 의 QDBusPendingReply 객체의 복사본을 생성합니다. QDBusPendingCall 및 QDBusPendingCallWatcher 와 마찬가지로, 이 QDBusPendingReply 객체는 동일한 보류 중인 호출 참조를 공유합니다. 모든 복사본은 동일한 반환값을 공유합니다.
[implicit, since 6.10] QDBusPendingReply::QDBusPendingReply(QDBusPendingReply<Types...> &&other)
other 에서 새로운 QDBusPendingReply 객체를 생성합니다.
이 함수는 Qt 6.10에서 도입되었습니다.
QVariant QDBusPendingReply::argumentAt(int index) const
응답 내용의 index 위치에 있는 인자를 반환합니다. 응답에 해당 위치만큼의 요소가 없는 경우, 이 함수의 반환 값은 정의되지 않습니다(아마도 어설션 오류가 발생할 것입니다). 따라서 처리가 완료되었고 응답이 유효한지 확인하는 것이 중요합니다.
응답에 index 위치에 인수가 없거나 응답이 오류인 경우, 이 함수는 유효하지 않은 ` QVariant`를 반환합니다. D-Bus 메시지에는 유효하지 않은 `QVariant`가 포함될 수 없으므로, 이 반환 값을 사용하여 오류 상태를 감지할 수 있습니다.
[constexpr] int QDBusPendingReply::count() const
응답이 가져야 할 인수의 개수를 반환합니다. 이 개수는 이 클래스의 void가 아닌 템플릿 매개변수의 개수와 일치합니다.
응답이 다른 개수의 인자(또는 다른 유형의 인자)를 가지고 도착하면, 잘못된 시그니처를 나타내는 오류 응답으로 변환됩니다.
QDBusError QDBusPendingReply::error() const
처리가 완료된 경우, 응답 메시지의 오류 내용을 가져옵니다. 응답 메시지의 처리가 완료되지 않았거나 정상적인 응답 메시지(오류가 아닌)를 포함하는 경우, 이 함수는 유효하지 않은 응답 메시지( QDBusError)를 반환합니다.
bool QDBusPendingReply::isError() const
응답에 오류 메시지가 포함되어 있으면 ` true `를 반환하고, 정상적인 메서드 응답이 포함되어 있으면 `false`를 반환합니다.
대기 중인 호출의 처리가 완료되지 않은 경우에도 이 함수는 true 를 반환합니다.
bool QDBusPendingReply::isFinished() const
대기 중인 호출의 처리가 완료되고 응답을 수신한 경우 true 를 반환합니다. 이 함수가 true 를 반환하면, isError(), error() 및 reply() 메서드는 유효한 정보를 반환해야 합니다.
이 함수는 waitForFinished()를 호출하거나 외부 D-Bus 이벤트가 발생한 경우에만 상태를 변경하며, 일반적으로 이벤트 루프 실행으로 돌아갈 때만 발생한다는 점에 유의하십시오.
QDBusPendingCallWatcher::isFinished()도 참조하십시오 .
bool QDBusPendingReply::isValid() const
응답에 일반 응답 메시지가 포함되어 있으면 ` true `를 반환하고, 그 외의 내용이 포함되어 있으면 `false`를 반환합니다.
보류 중인 호출의 처리가 완료되지 않은 경우, 이 함수는 false를 반환합니다.
QDBusMessage QDBusPendingReply::reply() const
보낸 비동기 호출에 대해 수신된 응답 메시지를, 처리가 완료된 경우 가져옵니다. 보류 중인 호출이 완료되지 않은 경우, 이 함수는 ` QDBusMessage::InvalidMessage` 유형의 ` QDBusMessage `를 반환합니다.
처리가 완료된 후, 메시지 유형은 오류 메시지이거나 정상적인 메서드 응답 메시지 중 하나가 됩니다.
typename Select<0>::Type QDBusPendingReply::value() const
이 응답의 첫 번째 인수를 Types[0] 유형(이 클래스의 첫 번째 템플릿 매개변수)으로 형변환하여 반환합니다. 이는 argumentAt<0>()을 호출하는 것과 동일합니다.
이 함수는 QDBusReply::value() 함수와 호환되도록 편의상 제공됩니다.
답변이 아직 도착하지 않은 경우, 이 함수는 답변이 처리될 때까지 호출 스레드를 차단한다는 점에 유의하십시오.
응답이 오류 응답인 경우, 이 함수는 기본 생성된 Types[0] 객체를 반환하며, 이 객체는 유효한 값과 구별되지 않을 수 있습니다. 메시지가 오류인지 여부를 확실하게 확인하려면 isError()을 사용하십시오.
void QDBusPendingReply::waitForFinished()
응답을 수신하고 처리할 때까지 호출 스레드의 실행을 일시 중지합니다. 이 함수가 반환된 후, ` isFinished()`는 `true`를 반환해야 하며, 이는 응답의 내용을 처리할 준비가 되었음을 나타냅니다.
QDBusPendingCallWatcher::waitForFinished()도 참조하십시오 .
QDBusPendingReply::operator typename Select<0>::Type() const
이 응답의 첫 번째 인수를 Types[0] (이 클래스의 첫 번째 템플릿 매개변수) 유형으로 형변환하여 반환합니다. 이는 argumentAt<0>()을 호출하는 것과 동일합니다.
이 함수는 QDBusReply::value() 함수와 호환되도록 편의상 제공됩니다.
답변이 아직 도착하지 않은 경우, 이 함수는 답변이 처리될 때까지 호출 스레드를 차단한다는 점에 유의하십시오.
응답이 오류 응답인 경우, 이 함수는 기본 생성된 Types[0] 객체를 반환하며, 이는 유효한 값과 구별되지 않을 수 있습니다. 메시지가 오류인지 여부를 확실하게 확인하려면 isError()을 사용하십시오.
[implicit, since 6.10] int &QDBusPendingReply::operator=(QDBusPendingReply<Types...> &&other)
other 를 이 QDBusPendingReply 인스턴스에 이동 할당하고, 현재 보류 중인 호출에 대한 참조를 해제합니다. 현재 참조가 완료되지 않은 보류 중인 호출을 가리키고 있으며, 이것이 마지막 참조인 경우, 해당 보류 중인 호출은 취소되며, 응답 내용이 도착하더라도 이를 가져올 방법이 없습니다.
이 함수는 Qt 6.10에서 도입되었습니다.
QDBusPendingReply<Types...> &QDBusPendingReply::operator=(const QDBusMessage &message)
이 객체가 ` message ` 메시지의 내용을 가져오도록 하고, 현재 보류 중인 호출에 대한 참조를 해제합니다. 현재 참조가 완료되지 않은 보류 중인 호출을 가리키고 있으며 이 참조가 마지막 참조인 경우, 해당 보류 중인 호출은 취소되며, 응답 내용이 도착하더라도 이를 가져올 방법이 없습니다.
이 함수가 완료되면, ` QDBusPendingReply ` 객체는 "완료" 상태가 되며 ` message `의 내용에 접근할 수 있게 됩니다.
isFinished()도 참조하십시오 .
QDBusPendingReply<Types...> &QDBusPendingReply::operator=(const QDBusPendingCall &call)
이 객체가 ` call ` 대기 중인 호출에서 내용을 가져오도록 하고, 현재 대기 중인 호출에 대한 참조를 해제합니다. 현재 참조가 완료되지 않은 대기 중인 호출을 가리키고 있으며, 이 참조가 마지막 참조인 경우, 해당 대기 중인 호출은 취소되며, 응답 내용이 도착하더라도 이를 가져올 방법이 없습니다.
[implicit] int &QDBusPendingReply::operator=(const QDBusPendingReply<Types...> &other)
other 의 복사본을 생성하고, 현재 보류 중인 호출에 대한 참조를 해제합니다. 현재 참조가 완료되지 않은 보류 중인 호출을 가리키고 있으며, 이 참조가 마지막 참조인 경우, 해당 보류 중인 호출은 취소되며, 응답 내용이 도착하더라도 이를 가져올 수 없게 됩니다.
© 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.