reenabling disconnect on timeout for iodevice connections
[quassel.git] / src / common / signalproxy.h
index 0dc3332..9243608 100644 (file)
@@ -64,9 +64,8 @@ public:
   inline ProxyMode proxyMode() const { return _proxyMode; }
 
   bool addPeer(QIODevice *iodev);
-  void removePeer(QIODevice *iodev);
   bool addPeer(SignalProxy *proxy);
-  void removePeer(SignalProxy *proxy);
+  void removePeer(QObject *peer);
   void removeAllPeers();
   
   bool attachSignal(QObject *sender, const char *signal, const QByteArray& sigName = QByteArray());
@@ -120,6 +119,9 @@ public:
 
   void dumpProxyStats();
   
+protected:
+  void customEvent(QEvent *event);
+
 private slots:
   void dataAvailable();
   void detachSender();
@@ -159,6 +161,7 @@ private:
 
   void receivePackedFunc(AbstractPeer *sender, const QVariant &packedFunc);
   void receivePeerSignal(AbstractPeer *sender, const RequestType &requestType, const QVariantList &params);
+  void receivePeerSignal(SignalProxy *sender, const RequestType &requestType, const QVariantList &params);
   void handleSync(AbstractPeer *sender, QVariantList params);
   void handleInitRequest(AbstractPeer *sender, const QVariantList &params);
   void handleInitData(AbstractPeer *sender, const QVariantList &params);
@@ -198,8 +201,9 @@ private:
     IODevicePeer(QIODevice *device, bool compress) : AbstractPeer(AbstractPeer::IODevicePeer), _device(device), byteCount(0), usesCompression(compress), sentHeartBeats(0), lag(0) {}
     virtual void dispatchSignal(const RequestType &requestType, const QVariantList &params);
     inline void dispatchPackedFunc(const QVariant &packedFunc) { SignalProxy::writeDataToDevice(_device, packedFunc, usesCompression); }
-    inline QIODevice *device() const { return _device; }
+    QString address() const;
     inline bool isOpen() const { return _device->isOpen(); }
+    inline void close() const { _device->close(); }
     inline bool readData(QVariant &item) { return SignalProxy::readDataFromDevice(_device, byteCount, item, usesCompression); }
   private:
     QIODevice *_device;
@@ -212,10 +216,11 @@ private:
 
   class SignalProxyPeer : public AbstractPeer {
   public:
-    SignalProxyPeer(SignalProxy *proxy) : AbstractPeer(AbstractPeer::SignalProxyPeer), proxy(proxy) {}
+    SignalProxyPeer(SignalProxy *sender, SignalProxy *receiver) : AbstractPeer(AbstractPeer::SignalProxyPeer), sender(sender), receiver(receiver) {}
     virtual void dispatchSignal(const RequestType &requestType, const QVariantList &params);
   private:
-    SignalProxy *proxy;
+    SignalProxy *sender;
+    SignalProxy *receiver;
   };
 
   // a Hash of the actual used communication object to it's corresponding peer