From 89e28856360c1d92ede38b97511ef711053f39a6 Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Sun, 1 Feb 2009 14:00:02 +0100 Subject: [PATCH] Improving heart beat system. The SignalProxy uses the heart beats only as a last resort to check if a peer is still alive. As long as data is received the signalproxy will be happy. Fixes #311 --- src/common/signalproxy.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/common/signalproxy.cpp b/src/common/signalproxy.cpp index d9943b2b..256fbbcf 100644 --- a/src/common/signalproxy.cpp +++ b/src/common/signalproxy.cpp @@ -195,8 +195,8 @@ void SignalProxy::SignalRelay::attachSignal(QObject *sender, int signalId, const if(!funcName.isEmpty()) { fn = QMetaObject::normalizedSignature(funcName); } else { - fn = SIGNAL(); - fn += sender->metaObject()->method(signalId).signature(); + fn = SIGNAL(fakeMethodSignature()); + fn = fn.replace("fakeMethodSignature()", sender->metaObject()->method(signalId).signature()); } _slots[slotId] = Signal(sender, signalId, fn); @@ -660,6 +660,17 @@ void SignalProxy::receivePackedFunc(AbstractPeer *sender, const QVariant &packed } void SignalProxy::receivePeerSignal(AbstractPeer *sender, const RequestType &requestType, const QVariantList ¶ms) { + switch(requestType) { + // list all RequestTypes that shouldnot trigger a heartbeat counter reset here + case HeartBeatReply: + break; + default: + if(sender->type() == AbstractPeer::IODevicePeer) { + IODevicePeer *ioPeer = static_cast(sender); + ioPeer->sentHeartBeats = 0; + } + } + switch(requestType) { case RpcCall: if(params.empty()) -- 2.20.1