void AsyncHTTPLookup::slotResult( KJob *job ) { if ( 0 != job->error() ) { result_ = ServerError; if ( !block_ ) emit queryReady(); return; } jobFinished(); }
Result AsyncHTTPLookup::lookup ( const QString & hostName, uint port, const TrackOffsetList & trackOffsetList ) { trackOffsetList_ = trackOffsetList; connect( this, SIGNAL(queryReady()), SLOT(slotQueryReady()) ); connect( this, SIGNAL(readReady()), SLOT(requestCDInfoForMatch()) ); initURL( hostName, port ); // Run a query. result_ = runQuery(); return result_; }
void HTTPLookup::jobFinished() { QStringList lineList = QString::fromUtf8(data_).split( QLatin1String( "\n" ), QString::SkipEmptyParts ); QStringList::ConstIterator it = lineList.constBegin(); switch ( state_ ) { case WaitingForQueryResponse: if ( it != lineList.constEnd() ) { QString line( *it ); result_ = parseQuery( line ); switch ( result_ ) { case Success: if ( !block_ ) emit queryReady(); break; case MultipleRecordFound: ++it; while ( it != lineList.constEnd() ) { QString line( *it ); if ( QLatin1Char( '.' ) == line[ 0 ] ) { result_ = Success; if ( !block_ ) emit queryReady(); break; } parseExtraMatch( line ); ++it; } break; case ServerError: case NoRecordFound: if ( !block_ ) emit queryReady(); return; break; default: break; } } break; case WaitingForReadResponse: { CDInfo info; if ( info.load( QString::fromUtf8(data_) ) ) { info.set( QLatin1String( "category" ), category_ ); info.set( QLatin1String( "discid" ), discid_ ); info.set( QLatin1String( "source" ), QLatin1String( "freedb" ) ); cdInfoList_.append( info ); } if ( !block_ ) emit readReady(); } return; break; default: break; } result_ = Success; }