-void SignalProxy::handleSync(AbstractPeer *sender, QVariantList params) {
- if(params.count() < 3) {
- qWarning() << "received invalid Sync call" << params;
- return;
- }
-
- QByteArray className = params.takeFirst().toByteArray();
- QString objectName = params.takeFirst().toString();
- QByteArray signal = params.takeFirst().toByteArray();
-
- if(!_syncSlave.contains(className) || !_syncSlave[className].contains(objectName)) {
- qWarning() << QString("no registered receiver for sync call: %1::%2 (objectName=\"%3\"). Params are:").arg(QString(className)).arg(QString(signal)).arg(objectName)
- << params;
- return;
- }
-
- SyncableObject *receiver = _syncSlave[className][objectName];
- if(!syncMap(receiver).contains(signal)) {
- qWarning() << QString("no matching slot for sync call: %1::%2 (objectName=\"%3\"). Params are:").arg(QString(className)).arg(QString(signal)).arg(objectName)
- << params;
- return;
- }
-
- int slotId = syncMap(receiver)[signal];
-
- QVariant returnValue((QVariant::Type)returnType(receiver, slotId));
- if(!invokeSlot(receiver, slotId, params, returnValue)) {
- qWarning("SignalProxy::handleSync(): invokeMethod for \"%s\" failed ", methodName(receiver, slotId).constData());
- return;
- }
-
- if(returnValue.type() != QVariant::Invalid && receiveMap(receiver).contains(slotId)) {
- int receiverId = receiveMap(receiver)[slotId];
- QVariantList returnParams;
- returnParams << className
- << objectName
- << QByteArray(receiver->metaObject()->method(receiverId).signature());
- if(argTypes(receiver, receiverId).count() > 1)
- returnParams << params;
- returnParams << returnValue;
- sender->dispatchSignal(Sync, returnParams);
- }
-
- // send emit update signal
- invokeSlot(receiver, updatedRemotelyId(receiver));
+
+bool SignalProxy::invokeSlot(QObject *receiver, int methodId, const QVariantList ¶ms, Peer *peer)
+{
+ QVariant ret;
+ return invokeSlot(receiver, methodId, params, ret, peer);