From 7daebc655af6b2f902d0322174273341401fd382 Mon Sep 17 00:00:00 2001 From: "Uwe L. Korn" Date: Wed, 26 Jun 2013 12:03:11 +0200 Subject: [PATCH] Performance++, Memory-- --- src/libtomahawk/network/ConnectionManager.cpp | 11 ++++++----- src/libtomahawk/network/ConnectionManager.h | 2 +- src/libtomahawk/network/Servent.cpp | 5 +++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/libtomahawk/network/ConnectionManager.cpp b/src/libtomahawk/network/ConnectionManager.cpp index c48c3bcfc..a844bc28c 100644 --- a/src/libtomahawk/network/ConnectionManager.cpp +++ b/src/libtomahawk/network/ConnectionManager.cpp @@ -28,6 +28,7 @@ #include "sip/SipInfo.h" #include "sip/SipPlugin.h" #include "utils/Logger.h" +#include "utils/WeakObjectHash.h" #include #include @@ -35,21 +36,21 @@ /* Management of ConnectionManagers */ static QMutex nodeMapMutex; -static QMap< QString, QWeakPointer< ConnectionManager > > connectionManagers; -static QMap< QString, QSharedPointer< ConnectionManager > > activeConnectionManagers; +static Tomahawk::Utils::WeakObjectHash< ConnectionManager > connectionManagers; +static QHash< QString, QSharedPointer< ConnectionManager > > activeConnectionManagers; QSharedPointer ConnectionManager::getManagerForNodeId( const QString &nodeid ) { QMutexLocker locker( &nodeMapMutex ); - if ( connectionManagers.contains( nodeid ) && !connectionManagers.value( nodeid ).isNull() ) { - return connectionManagers.value( nodeid ).toStrongRef(); + if ( connectionManagers.hash().contains( nodeid ) && !connectionManagers.hash().value( nodeid ).isNull() ) { + return connectionManagers.hash().value( nodeid ).toStrongRef(); } // There exists no connection for this nodeid QSharedPointer< ConnectionManager > manager( new ConnectionManager( nodeid ) ); manager->setWeakRef( manager.toWeakRef() ); - connectionManagers[nodeid] = manager->weakRef(); + connectionManagers.insert( nodeid, manager.toWeakRef() ); return manager; } diff --git a/src/libtomahawk/network/ConnectionManager.h b/src/libtomahawk/network/ConnectionManager.h index ce95e4016..f4c10e400 100644 --- a/src/libtomahawk/network/ConnectionManager.h +++ b/src/libtomahawk/network/ConnectionManager.h @@ -49,7 +49,7 @@ public: */ static void setActive( bool active, const QString& nodeid, const QSharedPointer& manager ); - ~ConnectionManager(); + virtual ~ConnectionManager(); /** * Receive incoming SipInfos and start a new thread to connect to this peer. diff --git a/src/libtomahawk/network/Servent.cpp b/src/libtomahawk/network/Servent.cpp index d011a0f9f..724616375 100644 --- a/src/libtomahawk/network/Servent.cpp +++ b/src/libtomahawk/network/Servent.cpp @@ -492,7 +492,7 @@ Servent::registerPeer( const Tomahawk::peerinfo_ptr& peerInfo ) peerInfoDebug(peerInfo) << "we need to establish the connection now... thinking"; if ( !connectedToSession( peerInfo->nodeId() ) ) { - ConnectionManager::getManagerForNodeId( peerInfo->nodeId() )->handleSipInfo( peerInfo ); + handleSipInfo( peerInfo ); } else { @@ -556,7 +556,8 @@ Servent::handleSipInfo( const Tomahawk::peerinfo_ptr& peerInfo ) if ( peerInfo->sipInfos().isEmpty() ) return; - ConnectionManager::getManagerForNodeId( peerInfo->nodeId() )->handleSipInfo( peerInfo ); + QSharedPointer manager = ConnectionManager::getManagerForNodeId( peerInfo->nodeId() ); + manager->handleSipInfo( peerInfo ); }