From 58fb0517b78c1d9715ce2e3c8faf6bc02514b310 Mon Sep 17 00:00:00 2001 From: Sebastien Braun Date: Sat, 17 Jul 2010 17:23:29 +0200 Subject: Remember to delete outgoing transfers when they are finished or failed --- src/pvs.cpp | 11 +++++++++++ src/pvs.h | 3 +++ 2 files changed, 14 insertions(+) (limited to 'src') diff --git a/src/pvs.cpp b/src/pvs.cpp index c7fe5ce..af5958e 100644 --- a/src/pvs.cpp +++ b/src/pvs.cpp @@ -659,6 +659,8 @@ bool PVS::createMulticastTransfer(QString const& objectPath, quint64& transferID connect(transfer, SIGNAL(failed(qulonglong, QString const)), SIGNAL(outgoingMulticastTransferFailed(qulonglong, QString const))); connect(transfer, SIGNAL(progress(qulonglong, qulonglong, qulonglong)), SIGNAL(outgoingMulticastTransferProgress(qulonglong, qulonglong, qulonglong))); connect(transfer, SIGNAL(announce(PVSMsg)), _pvsServerConnection, SLOT(sendMessage(PVSMsg))); + connect(transfer, SIGNAL(finished(qulonglong)), SLOT(outgoingMulticastTransferDelete(qulonglong))); + connect(transfer, SIGNAL(failed(qulonglong, QString const)), SLOT(outgoingMulticastTransferDelete(qulonglong))); QTimer::singleShot(0, transfer, SLOT(start())); errorReason = ""; return true; @@ -687,3 +689,12 @@ quint64 PVS::generateMcastTransferID() return (nodeID & Q_UINT64_C(0xffffffffffff0000)) | (quint64)(++counter); } +void PVS::outgoingMulticastTransferDelete(qulonglong transferID) +{ + PVSOutgoingMulticastTransfer* transfer = _outgoingTransfers.value(transferID, 0); + if (!transfer) + return; + + _outgoingTransfers.remove(transferID); + transfer->deleteLater(); +} diff --git a/src/pvs.h b/src/pvs.h index 93596d2..4e07fd8 100644 --- a/src/pvs.h +++ b/src/pvs.h @@ -159,5 +159,8 @@ private: QHash _outgoingTransfers; static quint64 generateMcastTransferID(); +private Q_SLOTS: + // housekeeping + void outgoingMulticastTransferDelete(qulonglong transferID); }; #endif /* PVSCLIENT_H_ */ -- cgit v1.2.3-55-g7522