#include <QString>
#include <QByteArray>
-#include <QMutex>
-
class SignalRelay;
class SyncableObject;
class QMetaObject;
static QString methodBaseName(const QMetaMethod &method);
const QList<int> &argTypes(QObject *obj, int methodId);
+ const int &minArgCount(QObject *obj, int methodId);
const QByteArray &methodName(QObject *obj, int methodId);
const QHash<QByteArray, int> &syncMap(SyncableObject *obj);
+ int updatedRemotelyId(SyncableObject *obj);
typedef QHash<int, QList<int> > ArgHash;
typedef QHash<int, QByteArray> MethodNameHash;
struct ClassInfo {
ArgHash argTypes;
+ QHash<int, int> minArgCount;
MethodNameHash methodNames;
+ int updatedRemotelyId; // id of the updatedRemotely() signal - makes things faster
QHash<QByteArray, int> syncMap;
};
void createClassInfo(QObject *obj);
void setArgTypes(QObject *obj, int methodId);
+ void setMinArgCount(QObject *obj, int methodId);
void setMethodName(QObject *obj, int methodId);
void setSyncMap(SyncableObject *obj);
+ void setUpdatedRemotelyId(QObject *obj);
bool methodsMatch(const QMetaMethod &signal, const QMetaMethod &slot) const;
void handleInitData(QIODevice *sender, const QVariantList ¶ms);
void handleSignal(const QByteArray &funcName, const QVariantList ¶ms);
- bool invokeSlot(QObject *receiver, int methodId, const QVariantList ¶ms);
+ bool invokeSlot(QObject *receiver, int methodId, const QVariantList ¶ms = QVariantList());
QVariantMap initData(SyncableObject *obj) const;
void setInitData(SyncableObject *obj, const QVariantMap &properties);
- void _detachSignals(QObject *sender);
- void _detachSlots(QObject *receiver);
- void _stopSync(SyncableObject *obj);
-
- public:
+public:
void dumpSyncMap(SyncableObject *object);
- private:
-
+
+private:
// Hash of used QIODevices
QHash<QIODevice*, quint32> _peerByteCount;
ProxyMode _proxyMode;
- // the slaveMutex protects both containers:
- // - _syncSlaves for sync and init calls
- // - _attachedSlots
- QMutex slaveMutex;
-
friend class SignalRelay;
};