We now have a current svn snapshot of libqxt in our contrib dir, and
[quassel.git] / src / contrib / libqxt-2007-10-24 / src / network / qxtrpcpeer.cpp
similarity index 95%
rename from src/contrib/qxt/qxtrpcpeer.cpp
rename to src/contrib/libqxt-2007-10-24/src/network/qxtrpcpeer.cpp
index 661d776..58a6bf9 100644 (file)
@@ -126,7 +126,6 @@ QxtRPCPeer::QxtRPCPeer(QIODevice* device, RPCTypes type, QObject* parent) : QObj
     QXT_INIT_PRIVATE(QxtRPCPeer);
     qxt_d().m_rpctype = type;
     qxt_d().m_peer = device;
-    //qDebug() << device->metaObject()->className();
 
     if (qobject_cast<QAbstractSocket *>(device)!=0)
     {
@@ -281,7 +280,7 @@ bool QxtRPCPeer::attachSignal(QObject* sender, const char* signal, const QByteAr
     {
         if (QxtMetaObject::isSignalOrSlot(rpcFunction.constData()))
         {
-            spec->rpcFunction = QMetaObject::normalizedSignature(rpcFunction.constData());
+            spec->rpcFunction = QMetaObject::normalizedSignature(rpcFunction);
         }
         else
         {
@@ -363,15 +362,15 @@ QByteArray QxtRPCPeer::serialize(QString fn, QVariant p1, QVariant p2, QVariant
     else if (p8.isNull()) ct = 7;
     else if (p9.isNull()) ct = 8;
     str << ct;
-    if (ct--) str << p1;
-    if (ct--) str << p2;
-    if (ct--) str << p3;
-    if (ct--) str << p4;
-    if (ct--) str << p5;
-    if (ct--) str << p6;
-    if (ct--) str << p7;
-    if (ct--) str << p8;
-    if (ct--) str << p9;
+    if (ct-- >0 ) str << p1;
+    if (ct-- >0) str << p2;
+    if (ct-- >0) str << p3;
+    if (ct-- >0) str << p4;
+    if (ct-- >0) str << p5;
+    if (ct-- >0) str << p6;
+    if (ct-- >0) str << p7;
+    if (ct-- >0) str << p8;
+    if (ct-- >0) str << p9;
     rv.replace(QByteArray("\\"), QByteArray("\\\\"));
     rv.replace(QByteArray("\n"), QByteArray("\\n"));
     rv.append("\n");
@@ -425,20 +424,21 @@ void QxtRPCPeer::callClientsExcept(quint64 id, QString fn, QVariant p1, QVariant
     callClientList(cs, fn, p1, p2, p3, p4, p5, p6, p7, p8);
 }
 
-#include <QStringList>
+
 #define QXT_ARG(i) ((numParams>i)?QGenericArgument(p ## i .typeName(), p ## i .constData()):QGenericArgument())
 void QxtRPCPeerPrivate::receivePeerSignal(QString fn, QVariant p0, QVariant p1, QVariant p2, QVariant p3, QVariant p4, QVariant p5, QVariant p6, QVariant p7, QVariant p8) const
 {
     QByteArray sig;
     int numParams;
-    if(!attachedSlots.value(fn).count()) qDebug() << "no attached slot for signal" << fn;// qDebug() << attachedSlots;
     foreach(QxtRPCPeerPrivate::MethodID i, attachedSlots.value(fn))
     {
         sig = i.first->metaObject()->method(i.second).signature();
         sig = sig.left(sig.indexOf('('));
-        numParams = i.first->metaObject()->method(i.second).parameterTypes().count(); //qDebug() << "calling" << fn << p0 << p1 << p2;
-        bool res = QMetaObject::invokeMethod(i.first, sig, QXT_ARG(0), QXT_ARG(1), QXT_ARG(2), QXT_ARG(3), QXT_ARG(4), QXT_ARG(5), QXT_ARG(6), QXT_ARG(7), QXT_ARG(8));
-        if(!res) qDebug() << "rpccall failed" << fn << sig << p0 << p1  << p2;
+        numParams = i.first->metaObject()->method(i.second).parameterTypes().count();
+        if(!QMetaObject::invokeMethod(i.first, sig, QXT_ARG(0), QXT_ARG(1), QXT_ARG(2), QXT_ARG(3), QXT_ARG(4), QXT_ARG(5), QXT_ARG(6), QXT_ARG(7), QXT_ARG(8)))
+        {
+            qWarning("QxtRPCPeerPrivate::receivePeerSignal: invokeMethod for \"%s\" failed ",sig.constData());
+        }
     }
 }
 
@@ -452,7 +452,10 @@ void QxtRPCPeerPrivate::receiveClientSignal(quint64 id, QString fn, QVariant p0,
         sig = i.first->metaObject()->method(i.second).signature();
         sig = sig.left(sig.indexOf('('));
         numParams = i.first->metaObject()->method(i.second).parameterTypes().count();
-        QMetaObject::invokeMethod(i.first, sig, Q_ARG(quint64, id), QXT_ARG(0), QXT_ARG(1), QXT_ARG(2), QXT_ARG(3), QXT_ARG(4), QXT_ARG(5), QXT_ARG(6), QXT_ARG(7));
+        if(!QMetaObject::invokeMethod(i.first, sig, Q_ARG(quint64, id), QXT_ARG(0), QXT_ARG(1), QXT_ARG(2), QXT_ARG(3), QXT_ARG(4), QXT_ARG(5), QXT_ARG(6), QXT_ARG(7)))
+        {
+            qWarning("QxtRPCPeerPrivate::receiveClientSignal: invokeMethod for \"%s\" failed ",sig.constData());
+        }
     }
 }
 
@@ -524,8 +527,7 @@ void QxtRPCPeer::disconnectSender()
     QxtRPCConnection* conn = qxt_d().m_clients.value(sender());
     if (!conn)
     {
-        //qDebug() << qxt_d().m_peer->metaObject()->className();
-        if (qxt_d().m_peer!= qobject_cast<QTcpSocket*>(sender()))
+        if (qxt_d().m_peer!= qobject_cast<QIODevice*>(sender()))
         {
             qWarning() << "QxtRPCPeer: Unrecognized object connected to disconnectSender";
             return;