- int slaveCount = 0;
- foreach(ObjectId oid, _syncSlave.values())
- slaveCount += oid.count();
-
- qDebug() << this;
- qDebug() << " Proxy Mode:" << mode;
- qDebug() << "attached sending Objects:" << _relayHash.count();
- qDebug() << " number of Signals:" << sigCount;
- qDebug() << " attached Slots:" << _attachedSlots.count();
- qDebug() << " number of synced Slaves:" << slaveCount;
- qDebug() << "number of Classes cached:" << _classInfo.count();
+const SignalProxy::ExtendedMetaObject::MethodDescriptor &SignalProxy::ExtendedMetaObject::methodDescriptor(int methodId)
+{
+ if (!_methods.contains(methodId)) {
+ _methods[methodId] = MethodDescriptor(_meta->method(methodId));
+ }
+ return _methods[methodId];
+}
+
+
+const QHash<int, int> &SignalProxy::ExtendedMetaObject::receiveMap()
+{
+ if (_receiveMap.isEmpty()) {
+ QHash<int, int> receiveMap;
+
+ QMetaMethod requestSlot;
+ QByteArray returnTypeName;
+ QByteArray signature;
+ QByteArray methodName;
+ QByteArray params;
+ int paramsPos;
+ int receiverId;
+ const int methodCount = _meta->methodCount();
+ for (int i = 0; i < methodCount; i++) {
+ requestSlot = _meta->method(i);
+ if (requestSlot.methodType() != QMetaMethod::Slot)
+ continue;
+
+ returnTypeName = requestSlot.typeName();
+ if (QMetaType::Void == (QMetaType::Type)returnType(i))
+ continue;
+
+#if QT_VERSION >= 0x050000
+ signature = requestSlot.methodSignature();
+#else
+ signature = QByteArray(requestSlot.signature());
+#endif
+ if (!signature.startsWith("request"))
+ continue;
+
+ paramsPos = signature.indexOf('(');
+ if (paramsPos == -1)
+ continue;
+
+ methodName = signature.left(paramsPos);
+ params = signature.mid(paramsPos);
+
+ methodName = methodName.replace("request", "receive");
+ params = params.left(params.count() - 1) + ", " + returnTypeName + ")";
+
+ signature = QMetaObject::normalizedSignature(methodName + params);
+ receiverId = _meta->indexOfSlot(signature);
+
+ if (receiverId == -1) {
+ signature = QMetaObject::normalizedSignature(methodName + "(" + returnTypeName + ")");
+ receiverId = _meta->indexOfSlot(signature);
+ }
+
+ if (receiverId != -1) {
+ receiveMap[i] = receiverId;
+ }
+ }
+ _receiveMap = receiveMap;
+ }
+ return _receiveMap;
+}
+
+
+QByteArray SignalProxy::ExtendedMetaObject::methodName(const QMetaMethod &method)
+{
+#if QT_VERSION >= 0x050000
+ QByteArray sig(method.methodSignature());
+#else
+ QByteArray sig(method.signature());
+#endif
+ return sig.left(sig.indexOf("("));