- QObject::connect(source, SIGNAL(destroyed()), parent, SLOT(detachSender()));
+ QByteArray signature;
+ for(int i = 0; i < eMeta->metaObject()->methodCount(); i++ ) {
+ signature = eMeta->metaObject()->method(i).signature();
+ if(!eMeta->syncMap().contains(signature))
+ continue;
+
+ if((proxy()->proxyMode() == SignalProxy::Server && !signature.contains("Requested")) ||
+ (proxy()->proxyMode() == SignalProxy::Client && signature.contains("Requested"))) {
+ _signalIds << i;
+ }
+ }
+ _signalCount = _signalIds.count();
+}
+
+void SignalProxy::SyncRelay::synchronize(SyncableObject *object) {
+ if(object->syncMetaObject() != _eMeta->metaObject()) {
+ qWarning() << Q_FUNC_INFO << "can't use SyncRelay of class" << _eMeta->metaObject()->className()
+ << "for SyncableObject" << object << "with syncMetaObject of class" << object->syncMetaObject()->className();
+ return;
+ }
+
+ QSet<int>::const_iterator sigIter = _signalIds.constBegin();
+ while(sigIter != _signalIds.constEnd()) {
+ QMetaObject::connect(object, *sigIter, this, QObject::staticMetaObject.methodCount() + *sigIter);
+ sigIter++;
+ }