fixed YACReader<->YACReaderLibrary communication

This commit is contained in:
Luis Ángel San Martín 2014-03-26 15:09:27 +01:00
parent 2ff1a49215
commit e6d7a47575
2 changed files with 18 additions and 8 deletions

View File

@ -44,13 +44,15 @@ bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic,
out.device()->seek(0); out.device()->seek(0);
out << (quint32)(block.size() - sizeof(quint32)); out << (quint32)(block.size() - sizeof(quint32));
int written = 0; int written, previousWritten = 0;
int tries = 0; int tries = 0;
while(written != block.size() && tries < 200) while(written != block.size() && tries < 200)
{ {
written += localSocket->write(block); written += localSocket->write(block);
localSocket->flush(); localSocket->flush();
tries++; if(written == previousWritten) //no bytes were written
tries++;
previousWritten = written;
} }
if(tries == 200) if(tries == 200)
{ {
@ -80,14 +82,17 @@ bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic,
QByteArray data; QByteArray data;
tries = 0; tries = 0;
while(data.length() < totalSize && tries < 10 ) int dataRead = 0;
while(data.length() < totalSize && tries < 20 )
{ {
data.append(localSocket->readAll()); data.append(localSocket->readAll());
if(data.length() < totalSize) if(data.length() < totalSize)
localSocket->waitForReadyRead(100); localSocket->waitForReadyRead(100);
tries++; if(data.length() == dataRead)
tries++;
dataRead = data.length();
} }
if(tries == 10) if(tries == 20)
{ {
localSocket->close(); localSocket->close();
QLOG_ERROR() << QString("Requesting Comic Info : unable to read data (%1,%2)").arg(data.length()).arg(totalSize); QLOG_ERROR() << QString("Requesting Comic Info : unable to read data (%1,%2)").arg(data.length()).arg(totalSize);
@ -122,12 +127,14 @@ bool YACReaderLocalClient::sendComicInfo(quint64 libraryId, ComicDB & comic)
out.device()->seek(0); out.device()->seek(0);
out << (quint32)(block.size() - sizeof(quint32)); out << (quint32)(block.size() - sizeof(quint32));
int written = 0; int written, previousWritten = 0;
int tries = 0; int tries = 0;
while(written != block.size() && tries < 100) while(written != block.size() && tries < 100)
{ {
written += localSocket->write(block); written += localSocket->write(block);
tries++; if(written == previousWritten)
tries++;
previousWritten = written;
} }
localSocket->close(); localSocket->close();
if(tries == 100 && written != block.size()) if(tries == 100 && written != block.size())

View File

@ -114,12 +114,15 @@ void YACReaderClientConnectionWorker::run()
tries = 0; tries = 0;
QByteArray data; QByteArray data;
int dataRead = 0;
while(data.size() < totalSize && tries < 200) while(data.size() < totalSize && tries < 200)
{ {
data.append(clientConnection->readAll()); data.append(clientConnection->readAll());
if(data.length() < totalSize) if(data.length() < totalSize)
clientConnection->waitForReadyRead(100); clientConnection->waitForReadyRead(100);
tries++; if(dataRead == data.length()) //no bytes were read
tries++;
dataRead = data.length();
} }
if(tries == 200) if(tries == 200)
{ {