Make the PeerPtr trick work with sync calls as well
[quassel.git] / src / common / signalproxy.h
index a1f9e71..9297ae8 100644 (file)
 #ifndef SIGNALPROXY_H
 #define SIGNALPROXY_H
 
-#include <QAbstractSocket>
 #include <QEvent>
-#include <QList>
-#include <QHash>
-#include <QVariant>
-#include <QVariantMap>
-#include <QPair>
 #include <QSet>
-#include <QString>
-#include <QByteArray>
-#include <QTimer>
 
 #include "protocol.h"
 
-class QMetaObject;
+struct QMetaObject;
 
 class Peer;
 class SyncableObject;
@@ -127,6 +118,8 @@ private:
 
     template<class T>
     void dispatch(const T &protoMessage);
+    template<class T>
+    void dispatch(Peer *peer, const T &protoMessage);
 
     void handle(Peer *peer, const Protocol::SyncMessage &syncMessage);
     void handle(Peer *peer, const Protocol::RpcCall &rpcCall);
@@ -134,10 +127,10 @@ private:
     void handle(Peer *peer, const Protocol::InitData &initData);
 
     template<class T>
-    void handle(Peer *peer, T) { Q_ASSERT(0); }
+    void handle(Peer *, T) { Q_ASSERT(0); }
 
-    bool invokeSlot(QObject *receiver, int methodId, const QVariantList &params, QVariant &returnValue);
-    bool invokeSlot(QObject *receiver, int methodId, const QVariantList &params = QVariantList());
+    bool invokeSlot(QObject *receiver, int methodId, const QVariantList &params, QVariant &returnValue, Peer *peer = 0);
+    bool invokeSlot(QObject *receiver, int methodId, const QVariantList &params = QVariantList(), Peer *peer = 0);
 
     void requestInit(SyncableObject *obj);
     QVariantMap initData(SyncableObject *obj) const;