150 error = QDBusError(reply);
152 if (error.isValid()) {
157 if (reply.arguments().size() >= 1 && reply.arguments().at(0).metaType() == data.metaType()) {
158 data = reply.arguments().at(0);
162 const char *expectedSignature = QDBusMetaType::typeToSignature(data.metaType());
163 const char *receivedType =
nullptr;
164 QByteArray receivedSignature;
166 if (reply.arguments().size() >= 1) {
167 if (reply.arguments().at(0).metaType() == QDBusMetaTypeId::argument()) {
169 QDBusArgument arg = qvariant_cast<QDBusArgument>(reply.arguments().at(0));
170 receivedSignature = arg.currentSignature().toLatin1();
171 if (receivedSignature == expectedSignature) {
173 QDBusMetaType::demarshall(arg, data.metaType(), data.data());
178 QMetaType type = reply.arguments().at(0).metaType();
179 receivedType = type.name();
180 receivedSignature = QDBusMetaType::typeToSignature(type);
185 if (receivedSignature.isEmpty())
186 receivedSignature =
"<empty signature>";
189 errorMsg =
"Unexpected reply signature: got \"%1\" (%4), expected \"%2\" (%3)"_L1
190 .arg(QLatin1StringView(receivedSignature),
191 QLatin1StringView(expectedSignature),
192 QLatin1StringView(data.typeName()),
193 QLatin1StringView(receivedType));
195 errorMsg =
"Unexpected reply signature: got \"%1\", expected \"%2\" (%3)"_L1
196 .arg(QLatin1StringView(receivedSignature),
197 QLatin1StringView(expectedSignature),
198 QLatin1StringView(data.typeName()));
201 error = QDBusError(QDBusError::InvalidSignature, errorMsg);