149 error = QDBusError(reply);
151 if (error.isValid()) {
156 if (reply.arguments().size() >= 1 && reply.arguments().at(0).metaType() == data.metaType()) {
157 data = reply.arguments().at(0);
161 const char *expectedSignature = QDBusMetaType::typeToSignature(data.metaType());
162 const char *receivedType =
nullptr;
163 QByteArray receivedSignature;
165 if (reply.arguments().size() >= 1) {
166 if (reply.arguments().at(0).metaType() == QDBusMetaTypeId::argument()) {
168 QDBusArgument arg = qvariant_cast<QDBusArgument>(reply.arguments().at(0));
169 receivedSignature = arg.currentSignature().toLatin1();
170 if (receivedSignature == expectedSignature) {
172 QDBusMetaType::demarshall(arg, data.metaType(), data.data());
177 QMetaType type = reply.arguments().at(0).metaType();
178 receivedType = type.name();
179 receivedSignature = QDBusMetaType::typeToSignature(type);
184 if (receivedSignature.isEmpty())
185 receivedSignature =
"<empty signature>";
188 errorMsg =
"Unexpected reply signature: got \"%1\" (%4), expected \"%2\" (%3)"_L1
189 .arg(QLatin1StringView(receivedSignature),
190 QLatin1StringView(expectedSignature),
191 QLatin1StringView(data.typeName()),
192 QLatin1StringView(receivedType));
194 errorMsg =
"Unexpected reply signature: got \"%1\", expected \"%2\" (%3)"_L1
195 .arg(QLatin1StringView(receivedSignature),
196 QLatin1StringView(expectedSignature),
197 QLatin1StringView(data.typeName()));
200 error = QDBusError(QDBusError::InvalidSignature, errorMsg);