- dispatchSignal(SignalProxy::HeartBeat, QVariantList() << QTime::currentTime());
- QHash<QIODevice *, peerInfo>::iterator peerIter = _peers.begin();
- QHash<QIODevice *, peerInfo>::iterator peerIterEnd = _peers.end();
- while(peerIter != peerIterEnd) {
- if(peerIter->sentHeartBeats > 0) {
- updateLag(peerIter.key(), _heartBeatTimer.interval());
- }
- if(peerIter->sentHeartBeats > 1) {
- QAbstractSocket *socket = qobject_cast<QAbstractSocket *>(peerIter.key());
- qWarning() << "SignalProxy: Disconnecting peer:"
- << (socket ? qPrintable(socket->peerAddress().toString()) : "local client")
- << "(didn't receive a heartbeat for over" << peerIter->sentHeartBeats * _heartBeatTimer.interval() / 1000 << "seconds)";
- peerIter.key()->close();
- } else {
- peerIter->sentHeartBeats++;
+ QVariantList heartBeatParams;
+ heartBeatParams << QTime::currentTime();
+ PeerHash::iterator peer = _peers.begin();
+ while(peer != _peers.end()) {
+ if((*peer)->type() == AbstractPeer::IODevicePeer) {
+ IODevicePeer *ioPeer = static_cast<IODevicePeer *>(*peer);
+ ioPeer->dispatchSignal(SignalProxy::HeartBeat, heartBeatParams);
+ if(ioPeer->sentHeartBeats > 0) {
+ updateLag(ioPeer, ioPeer->sentHeartBeats * _heartBeatTimer.interval());
+ }
+ if(ioPeer->sentHeartBeats > 1) {
+ qWarning() << "SignalProxy: Disconnecting peer:" << ioPeer->address()
+ << "(didn't receive a heartbeat for over" << ioPeer->sentHeartBeats * _heartBeatTimer.interval() / 1000 << "seconds)";
+ ioPeer->close();
+ } else {
+ ioPeer->sentHeartBeats++;
+ }