X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fsignalproxy.h;h=cca2ccb5fcb9ce77845526dbe9a177faec9c2926;hp=f4d61668084ccea16c97c652af27e3d4eaa239c2;hb=8ec76e512d20ce5d1dc76de556bb98a06b75d695;hpb=4c366fbbce0d8d3789e02b488583e7252e174830 diff --git a/src/common/signalproxy.h b/src/common/signalproxy.h index f4d61668..cca2ccb5 100644 --- a/src/common/signalproxy.h +++ b/src/common/signalproxy.h @@ -92,19 +92,23 @@ public: static QString methodBaseName(const QMetaMethod &method); const QList &argTypes(QObject *obj, int methodId); + const int &returnType(QObject *obj, int methodId); const int &minArgCount(QObject *obj, int methodId); const QByteArray &methodName(QObject *obj, int methodId); const QHash &syncMap(SyncableObject *obj); + const QHash &receiveMap(SyncableObject *obj); int updatedRemotelyId(SyncableObject *obj); typedef QHash > ArgHash; typedef QHash MethodNameHash; struct ClassInfo { ArgHash argTypes; + QHash returnType; QHash minArgCount; MethodNameHash methodNames; int updatedRemotelyId; // id of the updatedRemotely() signal - makes things faster QHash syncMap; + QHash receiveMap; }; void dumpProxyStats(); @@ -127,12 +131,15 @@ private: void initServer(); void initClient(); + const QMetaObject *metaObject(QObject *obj); void createClassInfo(QObject *obj); void setArgTypes(QObject *obj, int methodId); + void setReturnType(QObject *obj, int methodId); void setMinArgCount(QObject *obj, int methodId); void setMethodName(QObject *obj, int methodId); void setSyncMap(SyncableObject *obj); - void setUpdatedRemotelyId(QObject *obj); + void setReceiveMap(SyncableObject *obj); + void setUpdatedRemotelyId(SyncableObject *obj); bool methodsMatch(const QMetaMethod &signal, const QMetaMethod &slot) const; @@ -140,11 +147,12 @@ private: void dispatchSignal(const RequestType &requestType, const QVariantList ¶ms); void receivePeerSignal(QIODevice *sender, const QVariant &packedFunc); - void handleSync(QVariantList params); + void handleSync(QIODevice *sender, QVariantList params); void handleInitRequest(QIODevice *sender, const QVariantList ¶ms); void handleInitData(QIODevice *sender, const QVariantList ¶ms); void handleSignal(const QByteArray &funcName, const QVariantList ¶ms); + bool invokeSlot(QObject *receiver, int methodId, const QVariantList ¶ms, QVariant &returnValue); bool invokeSlot(QObject *receiver, int methodId, const QVariantList ¶ms = QVariantList()); QVariantMap initData(SyncableObject *obj) const;