X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fsignalproxy.h;h=e5bd0f6c13326a1b6707abd1f876628529efd264;hp=da9657fe08809debc9fd9519ab261c5835f4d7cc;hb=287674ebe59cf8129645722693391f4b4ad8d240;hpb=980f7e97e879e2f0493bfcdbe38a292eebbb9068 diff --git a/src/common/signalproxy.h b/src/common/signalproxy.h index da9657fe..e5bd0f6c 100644 --- a/src/common/signalproxy.h +++ b/src/common/signalproxy.h @@ -28,6 +28,7 @@ #include #include #include +#include class SignalRelay; class SyncableObject; @@ -43,9 +44,11 @@ public: }; enum RequestType { - Sync = 0, + Sync = 1, + RpcCall, InitRequest, - InitData + InitData, + HeartBeat }; SignalProxy(QObject *parent); @@ -89,6 +92,7 @@ public: static QString methodBaseName(const QMetaMethod &method); const QList &argTypes(QObject *obj, int methodId); + const int &minArgCount(QObject *obj, int methodId); const QByteArray &methodName(QObject *obj, int methodId); const QHash &syncMap(SyncableObject *obj); int updatedRemotelyId(SyncableObject *obj); @@ -97,6 +101,7 @@ public: typedef QHash MethodNameHash; struct ClassInfo { ArgHash argTypes; + QHash minArgCount; MethodNameHash methodNames; int updatedRemotelyId; // id of the updatedRemotely() signal - makes things faster QHash syncMap; @@ -110,6 +115,7 @@ private slots: void removePeerBySender(); void objectRenamed(QString oldname, QString newname); void objectRenamed(QByteArray classname, QString oldname, QString newname); + void sendHeartBeat(); signals: void peerRemoved(QIODevice *obj); @@ -123,14 +129,15 @@ private: 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 dispatchSignal(QIODevice *receiver, const QVariant &identifier, const QVariantList ¶ms); - void dispatchSignal(const QVariant &identifier, const QVariantList ¶ms); + void dispatchSignal(QIODevice *receiver, const RequestType &requestType, const QVariantList ¶ms); + void dispatchSignal(const RequestType &requestType, const QVariantList ¶ms); void receivePeerSignal(QIODevice *sender, const QVariant &packedFunc); void handleSync(QVariantList params); @@ -167,6 +174,7 @@ private: ProxyMode _proxyMode; + QTimer _heartBeatTimer; friend class SignalRelay; };