1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-03-20 15:59:42 +01:00

* Make sure we always access dbimpl's mutex-protected.

This commit is contained in:
Christian Muehlhaeuser 2012-06-21 11:24:10 +02:00
parent 9ad3e053e7
commit eb9786e08d
9 changed files with 29 additions and 30 deletions

View File

@ -24,6 +24,7 @@
#include "TomahawkSettings.h"
#include "utils/TomahawkUtils.h"
#include "database/Database.h"
#include "database/DatabaseImpl.h"
#include "Source.h"
#include "TomahawkOAuthTwitter.h"
@ -241,7 +242,7 @@ TwitterConfigWidget::postGotTomahawkStatusAuthVerifyReply( const QTweetUser &use
connect( statUpdate, SIGNAL( postedStatus(const QTweetStatus &) ), SLOT( postGotTomahawkStatusUpdateReply(const QTweetStatus &) ) );
connect( statUpdate, SIGNAL( error(QTweetNetBase::ErrorCode, const QString&) ), SLOT( postGotTomahawkStatusUpdateError(QTweetNetBase::ErrorCode, const QString &) ) );
QString uuid = QUuid::createUuid();
QString message = QString( "Got Tomahawk? {" ) + Database::instance()->dbid() + QString( "} (" ) + uuid.mid( 1, 8 ) + QString( ")" ) + QString( " http://gettomahawk.com" );
QString message = QString( "Got Tomahawk? {" ) + Database::instance()->impl()->dbid() + QString( "} (" ) + uuid.mid( 1, 8 ) + QString( ")" ) + QString( " http://gettomahawk.com" );
if ( m_postGTtype == "@Mention" )
{
QString user = m_ui->twitterUserTweetLineEdit->text();
@ -257,7 +258,7 @@ TwitterConfigWidget::postGotTomahawkStatusAuthVerifyReply( const QTweetUser &use
connect( statUpdate, SIGNAL( parsedDirectMessage(const QTweetDMStatus &)), SLOT( postGotTomahawkDirectMessageReply(const QTweetDMStatus &) ) );
connect( statUpdate, SIGNAL( error(QTweetNetBase::ErrorCode, const QString&) ), SLOT( postGotTomahawkStatusUpdateError(QTweetNetBase::ErrorCode, const QString &) ) );
QString uuid = QUuid::createUuid();
QString message = QString( "Got Tomahawk? {" ) + Database::instance()->dbid() + QString( "} (" ) + uuid.mid( 1, 8 ) + QString( ")" ) + QString( " http://gettomahawk.com" );
QString message = QString( "Got Tomahawk? {" ) + Database::instance()->impl()->dbid() + QString( "} (" ) + uuid.mid( 1, 8 ) + QString( ")" ) + QString( " http://gettomahawk.com" );
QString user = m_ui->twitterUserTweetLineEdit->text();
if ( user.startsWith( "@" ) )
user.remove( 0, 1 );

View File

@ -36,6 +36,7 @@
#include <utils/TomahawkUtils.h>
#include <TomahawkSettings.h>
#include <database/Database.h>
#include <database/DatabaseImpl.h>
#include <network/Servent.h>
#include "Source.h"
@ -63,10 +64,10 @@ TwitterSipPlugin::TwitterSipPlugin( Tomahawk::Accounts::Account* account )
m_configuration = account->configuration();
qDebug() << "SIP configuration:" << m_configuration << m_configuration[ "cachedpeers" ];
if ( Database::instance()->dbid() != m_account->configuration()[ "saveddbid" ].toString() )
if ( Database::instance()->impl()->dbid() != m_account->configuration()[ "saveddbid" ].toString() )
{
m_configuration[ "cachedpeers" ] = QVariantHash();
m_configuration[ "saveddbid" ] = Database::instance()->dbid();
m_configuration[ "saveddbid" ] = Database::instance()->impl()->dbid();
syncConfig();
}
@ -226,7 +227,7 @@ TwitterSipPlugin::registerOffers( const QStringList &peerList )
{
QVariantHash peerData = m_cachedPeers[screenName].toHash();
if ( peerData.contains( "onod" ) && peerData["onod"] != Database::instance()->dbid() )
if ( peerData.contains( "onod" ) && peerData["onod"] != Database::instance()->impl()->dbid() )
{
m_cachedPeers.remove( screenName );
m_configuration[ "cachedpeers" ] = m_cachedPeers;
@ -313,7 +314,7 @@ TwitterSipPlugin::parseGotTomahawk( const QRegExp &regex, const QString &screenN
else
qDebug() << "TwitterSipPlugin parsed node " << node << " out of the tweet";
if ( node == Database::instance()->dbid() )
if ( node == Database::instance()->impl()->dbid() )
{
qDebug() << "My dbid found; ignoring";
return;
@ -489,7 +490,7 @@ TwitterSipPlugin::directMessages( const QList< QTweetDMStatus > &messages )
QMetaObject::invokeMethod( this, "registerOffer", Q_ARG( QString, status.senderScreenName() ), Q_ARG( QVariantHash, peerData ) );
if ( Database::instance()->dbid().startsWith( splitNode[1] ) )
if ( Database::instance()->impl()->dbid().startsWith( splitNode[1] ) )
{
qDebug() << "TwitterSipPlugin found message destined for this node; destroying it";
if ( !m_directMessageDestroy.isNull() )
@ -533,12 +534,12 @@ TwitterSipPlugin::registerOffer( const QString &screenName, const QVariantHash &
if ( !_peerData.contains( "okey" ) ||
!_peerData.contains( "onod" ) ||
( _peerData.contains( "onod" ) && _peerData["onod"] != Database::instance()->dbid() ) )
( _peerData.contains( "onod" ) && _peerData["onod"] != Database::instance()->impl()->dbid() ) )
{
QString okey = QUuid::createUuid().toString().split( '-' ).last();
okey.chop( 1 );
_peerData["okey"] = QVariant::fromValue< QString >( okey );
_peerData["onod"] = QVariant::fromValue< QString >( Database::instance()->dbid() );
_peerData["onod"] = QVariant::fromValue< QString >( Database::instance()->impl()->dbid() );
peersChanged = true;
needToAddToCache = true;
needToSend = true;
@ -593,7 +594,7 @@ TwitterSipPlugin::sendOffer( const QString &screenName, const QVariantHash &peer
qDebug() << Q_FUNC_INFO;
QString offerString = QString( "TOMAHAWKPEER:Host=%1:Port=%2:Node=%3*%4:PKey=%5" ).arg( peerData["ohst"].toString() )
.arg( peerData["oprt"].toString() )
.arg( Database::instance()->dbid() )
.arg( Database::instance()->impl()->dbid() )
.arg( peerData["node"].toString().left( 8 ) )
.arg( peerData["okey"].toString() );
qDebug() << "TwitterSipPlugin sending message to " << screenName << ": " << offerString;

View File

@ -29,6 +29,7 @@
#include <QTimer>
#include "database/Database.h"
#include "database/DatabaseImpl.h"
#include "network/Servent.h"
#include "accounts/AccountDllMacro.h"
@ -101,14 +102,14 @@ public slots:
// Keep newer versions first
QByteArray advert = QString( "TOMAHAWKADVERT:%1:%2:%3" )
.arg( m_port )
.arg( Database::instance()->dbid() )
.arg( Database::instance()->impl()->dbid() )
.arg( QHostInfo::localHostName() )
.toAscii();
m_sock.writeDatagram( advert.data(), advert.size(),
QHostAddress::Broadcast, ZCONF_PORT );
advert = QString( "TOMAHAWKADVERT:%1:%2" )
.arg( m_port )
.arg( Database::instance()->dbid() )
.arg( Database::instance()->impl()->dbid() )
.toAscii();
m_sock.writeDatagram( advert.data(), advert.size(),
QHostAddress::Broadcast, ZCONF_PORT );
@ -140,7 +141,7 @@ private slots:
{
bool ok;
int port = parts.at(1).toInt( &ok );
if ( ok && Database::instance()->dbid() != parts.at( 2 ) )
if ( ok && Database::instance()->impl()->dbid() != parts.at( 2 ) )
{
emit tomahawkHostFound( sender.toString(), port, parts.at( 3 ), parts.at( 2 ) );
}
@ -149,7 +150,7 @@ private slots:
{
bool ok;
int port = parts.at(1).toInt( &ok );
if ( ok && Database::instance()->dbid() != parts.at( 2 ) )
if ( ok && Database::instance()->impl()->dbid() != parts.at( 2 ) )
{
qDebug() << "ADVERT received:" << sender << port;
Node *n = new Node( sender.toString(), parts.at( 2 ), port );

View File

@ -20,6 +20,7 @@
#include "Collection.h"
#include "database/Database.h"
#include "database/DatabaseImpl.h"
#include "database/DatabaseCommand_GenericSelect.h"
#include "database/DatabaseCommand_SetCollectionAttributes.h"
#include "database/DatabaseCommand_LoadFiles.h"
@ -134,13 +135,14 @@ void
EchonestCatalogSynchronizer::uploadDb()
{
// create two catalogs: uuid_song, and uuid_artist.
QNetworkReply* r = Echonest::Catalog::create( QString( "%1_song" ).arg( Database::instance()->dbid() ), Echonest::CatalogTypes::Song );
QNetworkReply* r = Echonest::Catalog::create( QString( "%1_song" ).arg( Database::instance()->impl()->dbid() ), Echonest::CatalogTypes::Song );
connect( r, SIGNAL( finished() ), this, SLOT( songCreateFinished() ) );
// r = Echonest::Catalog::create( QString( "%1_artist" ).arg( Database::instance()->dbid() ), Echonest::CatalogTypes::Artist );
// connect( r, SIGNAL( finished() ), this, SLOT( artistCreateFinished() ) );
}
void
EchonestCatalogSynchronizer::songCreateFinished()
{

View File

@ -19,6 +19,7 @@
#include "SourceList.h"
#include "database/Database.h"
#include "database/DatabaseImpl.h"
#include "database/DatabaseCommand_LoadAllSources.h"
#include "network/RemoteCollection.h"
#include "network/ControlConnection.h"
@ -189,7 +190,7 @@ SourceList::get( const QString& username, const QString& friendlyName )
QMutexLocker lock( &m_mut );
source_ptr source;
if ( Database::instance()->dbid() == username )
if ( Database::instance()->impl()->dbid() == username )
{
return m_local;
}

View File

@ -144,10 +144,3 @@ Database::impl()
return m_implHash.value( thread );
}
QString
Database::dbid() const
{
return m_impl->dbid();
}

View File

@ -52,8 +52,6 @@ public:
explicit Database( const QString& dbname, QObject* parent = 0 );
~Database();
QString dbid() const;
void loadIndex();
bool isReady() const { return m_ready; }

View File

@ -34,6 +34,7 @@
#include "Connection.h"
#include "ControlConnection.h"
#include "database/Database.h"
#include "database/DatabaseImpl.h"
#include "StreamConnection.h"
#include "SourceList.h"
@ -437,7 +438,7 @@ Servent::createParallelConnection( Connection* orig_conn, Connection* new_conn,
m.insert( "key", tmpkey );
m.insert( "offer", key );
m.insert( "port", externalPort() );
m.insert( "controlid", Database::instance()->dbid() );
m.insert( "controlid", Database::instance()->impl()->dbid() );
QJson::Serializer ser;
orig_conn->sendMsg( Msg::factory( ser.serialize(m), Msg::JSON ) );
@ -527,7 +528,7 @@ Servent::connectToPeer( const QString& ha, int port, const QString &key, const Q
m["conntype"] = "accept-offer";
m["key"] = key;
m["port"] = externalPort();
m["nodeid"] = Database::instance()->dbid();
m["nodeid"] = Database::instance()->impl()->dbid();
conn->setFirstMessage( m );
if( name.length() )
@ -563,7 +564,7 @@ Servent::connectToPeer( const QString& ha, int port, const QString &key, Connect
m["conntype"] = "accept-offer";
m["key"] = key;
m["port"] = externalPort();
m["controlid"] = Database::instance()->dbid();
m["controlid"] = Database::instance()->impl()->dbid();
conn->setFirstMessage( m );
}
@ -602,7 +603,7 @@ Servent::reverseOfferRequest( ControlConnection* orig_conn, const QString& their
m["conntype"] = "push-offer";
m["key"] = theirkey;
m["port"] = externalPort();
m["controlid"] = Database::instance()->dbid();
m["controlid"] = Database::instance()->impl()->dbid();
new_conn->setFirstMessage( m );
createParallelConnection( orig_conn, new_conn, QString() );
}

View File

@ -32,6 +32,7 @@
#include "FuncTimeout.h"
#include "database/Database.h"
#include "database/DatabaseImpl.h"
#include "network/ControlConnection.h"
#include "network/Servent.h"
#include "SourceList.h"
@ -130,7 +131,7 @@ SipHandler::onPeerOnline( const QString& jid )
QString key = uuid();
ControlConnection* conn = new ControlConnection( Servent::instance(), QString() );
const QString& nodeid = Database::instance()->dbid();
const QString& nodeid = Database::instance()->impl()->dbid();
conn->setName( jid.left( jid.indexOf( "/" ) ) );
conn->setId( nodeid );